免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1131 | 回复: 0
打印 上一主题 下一主题

C++ 载入驱动的问题,对会的来说简单,急,都来看看吧 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-26 17:51 |只看该作者 |倒序浏览
有一段VB调用驱动的代码,
它的主函数入口是:
Dim c_Drv As New cls_Driver
Sub Main()
  With c_Drv
  .szDrvFilePath = App.path & "\mydriver.sys"
  .szDrvLinkName = "NewPine"
  .szDrvSvcName = "NewPine"
  .szDrvDisplayName = "NewPine"
  .InstDrv
  .StartDrv
  .OpenDrv
  Dim path As String
  path = "\??\" & "C:\Program Files\MSBuild\ndt.exe"
  c_Drv.IoControl 2231680, VarPtr(path), 4, 0, 0
  End With
End Sub

=====

其中 cls_Driver 这是个类,加载驱动什么的。  
cls_Driver 里有段代码如下
'lpInBuf 和 lpOutBuf 都是指向缓冲区的指针
Public Function IoControl(ByVal dwIoControlCode As Long, ByVal lpInBuffer As Long, ByVal nInBufferSize As Long, ByVal lpOutBuffer As Long, ByVal nOutBufferSize As Long, Optional ByRef lpBytesReturned As Long = 0) As Long
Dim lDrvRetSize As Long
IoControl = DeviceIoControl(hDrvHandle, dwIoControlCode, ByVal lpInBuffer, nInBufferSize, ByVal lpOutBuffer, nOutBufferSize, lDrvRetSize, ByVal 0)
lpBytesReturned = lDrvRetSize
End Function



以下是我对照它用vs2008 c++写的代码

int _tmain(int argc, _TCHAR* argv[])
{



//获取路径
TCHAR tszPath[MAX_PATH];
GetModuleFileName(NULL,tszPath,MAX_PATH);
*(_tcsrchr(tszPath,_T('\\')) + 1) = _T('\0');
_tcscat_s(tszPath,MAX_PATH,_T("mydriver.sys"));

//载入驱动
if(LoadNTDriver(TEXT("DriverTest"),tszPath))
printf("Load Driver Sucess.\n");
else
  printf("Load Driver Faile\n");
//打开设备
HANDLE hDevice =  
CreateFile(TEXT("\\\\.\\NewPine"),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
if (hDevice == INVALID_HANDLE_VALUE)
{
printf("Can no open she bei:%d", GetLastError());
CloseHandle(hDevice);
if(UnloadNTDriver(TEXT("DriverTest")))
printf("Unload Driver Sucess.\n");
return 0x01i32;
}

DWORD dwRet;
DeviceIoControl(hDevice,2231680, "C:\Program Files\MSBuild\ndt.exe",4, 0, 0, &dwRet, 0);
CloseHandle(hDevice);
  system("pause");
//卸载驱动
UnloadNTDriver(TEXT("Ring0"));
return 0;
}

运行时驱动加载成功,但运行到 红色部分就蓝屏,哪里出错呢?
该怎么改写呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP