阅读:2893回复:3
IoAttachDeviceToDeviceStack 绑定设备失败。。。。
同一个驱动对象创建的多个设备对象 能进行绑定吗?
我的代码如下 但绑定不成功。。。 NTSTATUS status; PDEVICE_OBJECT pDev_Obj_Old; //创建设备名称 UNICODE_STRING devName; UNICODE_STRING devNameTop; RtlInitUnicodeString(&devName,L"\\Device\\MyDDKDevice"); //创建设备 status = IoCreateDevice( pDriverObject,0,&(UNICODE_STRING)devName,FILE_DEVICE_UNKNOWN,0, FALSE,&g_pDevObj ); if (!NT_SUCCESS(status)) return status; g_pDevObj->Flags |= DO_BUFFERED_IO; RtlInitUnicodeString(&devNameTop,L"\\Device\\MyDDKDeviceTop"); //创建设备 status = IoCreateDevice( pDriverObject,0,&(UNICODE_STRING)devNameTop,FILE_DEVICE_UNKNOWN,0, FALSE,&g_pDevObjTop ); if (!NT_SUCCESS(status)) return status; g_pDevObjTop->Flags |= DO_BUFFERED_IO; pDev_Obj_Old=IoAttachDeviceToDeviceStack(g_pDevObj,g_pDevObjTop); g_pDevObjTop->Flags=g_pDevObjTop->Flags & ~DO_DEVICE_INITIALIZING; KdPrint(("%X",g_pDevObj)); KdPrint(("%X",pDev_Obj_Old)); return STATUS_SUCCESS; |
|
禁止发言
![]() |
沙发#
发布于:2010-11-19 10:14
用户被禁言,该主题自动屏蔽! |
板凳#
发布于:2010-11-19 23:00
首先,楼主的行为我认为存在多余,创建的多个设备时,设置可以用DEVICE_OBJECT对象的NextDevice参数。
把创建的设备构成个设备栈,那么上层发往的IRP请求会一层层传递下去。 还有就如楼主所说的想法,我想应该设置下同步,不然万一设备没创建成功,你的绑定也就不成功了。 最后,我认为绑定和设置设备栈内部原理应该一样的,只是根据不同的应用使用了不同的方法。 |
|
禁止发言
![]() |
地板#
发布于:2010-11-20 00:50
用户被禁言,该主题自动屏蔽! |