阅读:1478回复:2
那位大侠能指定一下NdisMRegisterDevice的用法
NDIS_STATUS
NdisMRegisterDevice( IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_STRING DeviceName, IN PNDIS_STRING SymbolicName, IN PDRIVER_DISPATCH MajorFunctions[], OUT PDEVICE_OBJECT *pDeviceObject, OUT NDIS_HANDLE *NdisDeviceHandle ); 我想问一下MajorFuction参数该如何给呢? 我需要用户态程序使用DeviceIoControl,所以我的NDIS IM Driver就有相应于IRP_MJ_DEVICE_CONTROL的Dispatch函数 NTSTATUS IoCtrlDispatcher (IN PDEVICE_OBJECT Device Object,IN PIRP Irp) {......} 所以在NdisMRegisterDevice时需要注册这个函数。可是MajorFunctions参数是函数指针,不仅对于IRP_MJ_DEVICE_CONTROL, 难道得用下面的代码吗? PDRIVER_DISPATCH MajorFunctions[IRP_MJ_DEVICE_CONTROL+1]; For(I=0;I< IRP_MJ_DEVICE_CONTROL;I++) MajorFunctions[I]=NULL; MajorFunctions[IRP_MJ_DEVICE_CONTROL]=DispatchControl; ASSERT(STATUS_SUCCESS==NdisMRegisterDevice(WrapperHandle,” \\\\Device\\\\DeviceName”,”\\\\DosDevices\\\\SymbolicName”, MajorFunctions ,&DeviceObject,& NdisDeviceHandle)); 请那位大侠指点一下MajorFunctions参数的正确用法。 |
|
沙发#
发布于:2003-06-03 11:18
谢谢,这段代码非常有参考价值。
另外再问一下,XP Passthru的PtRegisterDevice里使用了一个叫GlobalLock的Spin Lock。 但是NT Passthru里是没有一个GlobalLock,而是使用了每个Adapt的 pAdapt->SpinLock。 那么如果我拷贝XP Passthru的PtRegisterDevice到NT Passthru里 使用,能不能直接将GlobalLock替换成pAdapt->SpinLock。 |
|
板凳#
发布于:2004-07-17 14:41
你的调用在哪里?
如果在intial里面的话,传进来的wrapper参数和driverentry 中的不同的,要用全局变量保存, 还有Adapter也要保存一个指针,在IoXXXX 处理IRP是要用到的。 |
|
|