oyhaiou
游客
游客
阅读:1916回复:2

请问错在何处?

楼主#
更多 发布于:2001-05-11 19:14
请问这段代码有何错误?
Win32端程序:
#include ...
#define DIOC_MY_IO  CTL_CODE (FILE_DEVICE_UNKNOWN,1,METHOD_NEITHER,FILE_ANY_ACCESS)
void main(){
HANDLE hDevice;
hDevice=CreateFile("f:\\vxd\\Sample.vxd",0,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//这里能够成功打开!
    if(hDevice==INVALID_HANDLE_VALUE){
cout<<"Open VXD error!"<<GetLastError()<<endl;
exit(1);
}
DeviceIoControl(hDevice,DIOC_MY_IO,NULL,0,NULL,0,NULL,NULL);
CloseHandle(hDevice);
}
VXD端程序:
DWORD AdpcmDevice::OnW32DeviceIoControl(PIOCTLPARAMS p)
{
PMAPDEVREQUEST pReq;
switch(p->dioc_IOCtlCode)
{
case DIOC_OPEN:
break;
case DIOC_CLOSEHANDLE:
break;
case DIOC_MY_IO:
dout<<"open is success!"<<endl;
shell_message(,,,,,,); }
return DEVIOCTL_NOERROR;
}

问题是DeviceIoControl(hDevice,DIOC_MY_IO,NULL,0,NULL,0,NULL,NULL)返回值为0,总不成功,所以DebugView看不到VXD中的输出信息!那么DeviceIoControl()用时应该注意那些问题呢?
llshi
驱动老牛
驱动老牛
  • 注册日期2001-05-05
  • 最后登录2016-01-16
  • 粉丝0
  • 关注0
  • 积分5300分
  • 威望26500点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-05-13 19:19
用汇编可能可行,但是再nt/2K下不行。必须做驱动。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
板凳#
发布于:2001-05-13 20:54
本站上有一库,可以实现在9x/2k下直接读写端口
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部