关于wince6.0下的CTL_CODE(...)函数的使用
向各位高手请教CTL_CODE(...)函数的使用,例如,我在文件中定义了
#define IOCTL_ScanClose CTL_CODE(FILE_DEVICE_PARAMETER, 0x83A, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PARAM_REQUEST CTL_CODE(FILE_DEVICE_PARAMETER, 0x83B, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PARAM_SEND CTL_CODE(FILE_DEVICE_PARAMETER, 0x840, METHOD_BUFFERED, FILE_ANY_ACCESS)
······
用DeviceIoControl(hSys,IOCTL_PARAM_SEND,PAR,NULL,data,1024,&dwl,NULL)来调用使用
现在不清楚IOCTL_PARAM_SEND定义了是发送消息的功能,对应的编号是0x840,这种宏定义,DeviceIoControl是怎样知道这个宏就是发送的功能呢?具体功能的映射关系是在哪里呢?
请各位指教啊,谢谢~!
[解决办法]
IOCTL_PARAM_SEND,相当于就是协议或者一个命令字,假如这个DeviceIoControl的实现是你写的,你要提供IOCTL_PARAM_SEND的定义给应用程序,并告知应用程序这是发送功能的命令,还有调用DeviceIoControl传入和传出的参数的结构和意义。
[解决办法]
用SI工具看一下这个在哪里定义就好了。