RYYMike
驱动牛犊
驱动牛犊
  • 注册日期2008-11-01
  • 最后登录2010-07-04
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望16点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1088回复:0

DeviceIoControl的问题

楼主#
更多 发布于:2008-12-02 17:58
#include "windows.h"
#include "winioctl.h"
#define MY_DVC_IN_CODE \
CTL_CODE(FILE_DEVICE_UNKNOWN, \
0xa01, \
METHOD_BUFFERED, \
FILE_READ_DATA|FILE_WRITE_DATA)
int main(){
HANDLE hDevice=CreateFile("\\\\.\\ExRYY",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_SYSTEM,0);
HANDLE EventHandle=
CreateEvent(NULL,TRUE,FALSE,"ExRYY");
DWORD EventNumber;
BOOL EventBool=DeviceIoControl(hDevice, MY_DVC_IN_CODE,(void*)EventHandle,sizeof(HANDLE),NULL,0,&EventNumber,(LPOVERLAPPED)NULL);
DWORD Error =GetLastError();
CloseHandle(EventHandle);
return 1;
}
就这样的代码,为什么会出现error=998内存分配访问失败错误,
但是如果把DeviceIoControl(hDevice, MY_DVC_IN_CODE,(void*)EventHandle,sizeof(HANDLE)NULL,0,&EventNumber,(LPOVERLAPPED)NULL);
改成DeviceIoControl(hDevice, MY_DVC_IN_CODE,0,0,NULL,0,&EventNumber,(LPOVERLAPPED)NULL);就可以在monitor里看到我自己的驱动打印出来的信息了。
为什么EventHandle会内存分配访问失败?
大家看看,先谢谢了。
游客

返回顶部