这个C声明如何转成VB的声明,以前没见过这种的

sxqvb 2017-05-10 10:40:09
如下:
'#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
'#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
'#define FILE_DEVICE_FILE_SYSTEM 9
'#define METHOD_BUFFERED 0
'#define FILE_ANY_ACCESS 0x00000000
...全文
1993 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-05-27
  • 打赏
  • 举报
回复
舉杯邀明月 2017-05-27
  • 打赏
  • 举报
回复
连“常量”与“宏”的概念都分不清楚,还谈什么B格………… 那些宏定义,别人是给C++用的,不是为VB6定义的。 WINIOCTL.h这个文件是M$发布的,要说装B格,也是MS的程序员在装。 这个文件中定义的I/O控制码,有它自身特有的规律性,它这个“看起来有点繁杂”的宏,其实也是很有道理的。 有些人就是自以为是,总觉得自己的想法才是对的,别人的想法跟自己不一致,肯定就是别人的想法不对。
舉杯邀明月 2017-05-26
  • 打赏
  • 举报
回复
引用 8 楼 Tiger_Zhao 的回复:
实际上这样的宏定义才病态,直接用 0x00090018 还方便调试时进行比对。
那个宏定义是C/C++的,虽然看起来是有点BT ,但从它本身的应用环境来说,还是很有道理的。 估计你没有仔细看过 WINIOCTL.h 中的内容。
Tiger_Zhao 2017-05-26
  • 打赏
  • 举报
回复
实际上这样的宏定义才病态,直接用 0x00090018 还方便调试时进行比对。
Tiger_Zhao 2017-05-26
  • 打赏
  • 举报
回复
TNND,表情点错了
Tiger_Zhao 2017-05-26
  • 打赏
  • 举报
回复
“常量”并不需要变化。
总是有人喜欢把简单的事情搞复杂,自觉B格高
泡泡龙 2017-05-25
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
[quote=引用 5 楼 liucqa 的回复:] 楼上果然是病态
只有偏执狂才能生存。[/quote] 你不是偏执,你已经进化到病态了
赵4老师 2017-05-24
  • 打赏
  • 举报
回复
引用 5 楼 liucqa 的回复:
楼上果然是病态
只有偏执狂才能生存。
泡泡龙 2017-05-24
  • 打赏
  • 举报
回复
楼上果然是病态
赵4老师 2017-05-12
  • 打赏
  • 举报
回复
'#define                   CTL_CODE(t                      ,f,m              ,a              ) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
'#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
'#define                            FILE_DEVICE_FILE_SYSTEM 9
'#define                                                      METHOD_BUFFERED 0
'#define                                                                      FILE_ANY_ACCESS 0x00000000
                                                                                               (((9)<<16)|((0)<<14)|((6)<<2)|(0))
                                                                                               10010000000000000000
                                                                                                              11000
                                                                                               10010000000000011000
                                                                                             &H   9   0   0   1   8
舉杯邀明月 2017-05-11
  • 打赏
  • 举报
回复
引用 2 楼 sxqvb 的回复:
谢谢啊,&H00090018 是你带入算出来的吗?
你贴出来的共5行“'#define ......”宏定义, 后面三行不用说了吧,在这儿来的,谁都看得懂。 然后,能够把前两个宏定义看懂(也没难度啊), 这个FSCTL_LOCK_VOLUME的“最终值”是多少,要“算出来”有什么难度呢…………
sxqvb 2017-05-11
  • 打赏
  • 举报
回复
谢谢啊,&H00090018 是你带入算出来的吗?
舉杯邀明月 2017-05-11
  • 打赏
  • 举报
回复
数据移位 + 拼合。 你可以直接定义成相应的常量,也可以定义一个函数实现这个“宏定义”的结果。
Const FSCTL_LOCK_VOLUME    As Long = &H00090018

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧