救命啊~~~!!!

超级无敌大菜鸟 2011-07-03 12:35:07
为什么找不到驱动的句柄啊,救命啊~~~~

驱动代码:

#include <ntddk.h>
void MyDriverUnload(PDRIVER_OBJECT pDriverObject);
NTSTATUS CreateMyDevice(PDRIVER_OBJECT pDriverObject);
#define INITCODE code_seg("INIT")
#define PAGECODE code_seg("PAGE")
#pragma INITCODE
extern "C"
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING pRegistryPath)
{
pDriverObject->DriverUnload=MyDriverUnload;
CreateMyDevice(pDriverObject);
return STATUS_SUCCESS;
}
#pragma PAGECODE
void MyDriverUnload(PDRIVER_OBJECT pDriverObject)
{
PDEVICE_OBJECT pDev;
UNICODE_STRING symbolicName;
RtlInitUnicodeString(&symbolicName,L"\\??\\BigAss");
IoDeleteSymbolicLink(&symbolicName);
pDev=pDriverObject->DeviceObject;
IoDeleteDevice(pDev);
}
NTSTATUS CreateMyDevice(PDRIVER_OBJECT pDriverObject)
{
NTSTATUS status;
PDEVICE_OBJECT pDevObj;
UNICODE_STRING devName;
UNICODE_STRING symbolicName;
RtlInitUnicodeString(&devName,L"\\Device\\ShitDriver");
status=IoCreateDevice(pDriverObject,0,&devName,FILE_DEVICE_UNKNOWN,0,TRUE,&pDevObj);
if (!NT_SUCCESS(status))
{
return status;
}
RtlInitUnicodeString(&symbolicName,L"\\??\\BigAss");
status=IoCreateSymbolicLink(&symbolicName,&devName);
if (!NT_SUCCESS(status))
{
IoDeleteDevice(pDevObj);
return status;
}
return STATUS_SUCCESS;
}

WIN32 控制台程序代码:

#include "stdafx.h"
#include <windows.h>

int main(int argc, char* argv[])
{
HANDLE hDevice;
hDevice=CreateFile("\\\\.\\BigAss",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hDevice == INVALID_HANDLE_VALUE)
{
printf("获取驱动句柄失败: %s with Win32 error code: %d\n","MyDriver", GetLastError() );
getchar();
return -1;
}
printf("start\n",hDevice);
getchar();
return 0;
}

驱动加载后,控制台程序显示的是“获取驱动句柄失败:MyDriver with Win32 error code: 1”,想破头也想不出哪错了,高手救命啊~~~!!!
...全文
29 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
已经自行解决。

1,070

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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