【求助】为什么创建的驱动设备连接符号,在应用层无法找到
下面是片段代码
有没有人帮我看看 出什么问题了
//创建设备和连接符
NTSTATUS CreateDevice(PDRIVER_OBJECT driver)
{
NTSTATUS status;
PDEVICE_OBJECT pDevObj;
UNICODE_STRING devName;
UNICODE_STRING symLinkName;
RtlInitUnicodeString(&devName,L"\\Device\\haibo_device");
status=IoCreateDevice(driver,0,&devName,FILE_DEVICE_UNKNOWN,0,TRUE,&pDevObj);
if(!NT_SUCCESS(status))
{
KdPrint(("创建设备haibo_device失败"));
return status;
}
pDevObj->Flags |= DO_BUFFERED_IO;
RtlInitUnicodeString(&symLinkName,L"\\??\\mylinks");
status = IoCreateSymbolicLink(&symLinkName,&devName);
if(!NT_SUCCESS(status))
{
KdPrint(("创建设备连接发生错误!"));
IoDeleteDevice(pDevObj);
return status;
}
KdPrint(("创建设备成功!\r\n"));
return STATUS_SUCCESS;
}
//下面是应用层的访问
HANDLE hDevice = CreateFile(L"\\\\.\\mylinks",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hDevice == INVALID_HANDLE_VALUE)
{
printf("打开设备失败,检查设备连接符是否存在,错误码%d\r\n",GetLastError());
getchar();
return -1;
}
这里找这个连接符返回失败,这是为什么啊
[课程]Android-CTF解题方法汇总!