阅读:1041回复:0
求教:如何在miniDriver 中响应Pnp消息
我的驱动初始化例程如下:
extern "C" ULONG DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) { NTSTATUS ret_sta; HW_INITIALIZATION_DATA HwInitData; RtlZeroMemory( &HwInitData, sizeof(HwInitData) ); HwInitData.HwInitializationDataSize = sizeof(HwInitData); HwInitData.HwInterrupt = NULL; HwInitData.HwReceivePacket = AdapterReceivePacket; HwInitData.HwCancelPacket = AdapterCancelPacket; HwInitData.HwRequestTimeoutHandler = AdapterTimeoutPacket; HwInitData.DeviceExtensionSize = sizeof(HW_DEVICE_EXTENSION); HwInitData.PerRequestExtensionSize = 0; HwInitData.FilterInstanceExtensionSize = 0; HwInitData.PerStreamExtensionSize = sizeof(ULONG); HwInitData.BusMasterDMA = FALSE; HwInitData.Dma24BitAddresses = FALSE; HwInitData.BufferAlignment = 3; HwInitData.DmaBufferSize = 0; HwInitData.TurnOffSynchronization = TRUE; ret_sta=StreamClassRegisterAdapter( DriverObject, RegistryPath, &HwInitData ); return ret_sta; } 相关的消息响应会在AdapterReceivePacket中完成。如下: VOID STREAMAPI AdapterReceivePacket( IN PHW_STREAM_REQUEST_BLOCK pSrb ) { int i; PHW_DEVICE_EXTENSION pDev = (PHW_DEVICE_EXTENSION)(pSrb->HwDeviceExtension); pSrb->Status = STATUS_SUCCESS; switch(pSrb->Command) { case SRB_INITIALIZE_DEVICE: pSrb->Status = InitializeDevice( pDev, pSrb->CommandData.ConfigInfo ); break; case SRB_UNINITIALIZE_DEVICE: { pSrb->Status = UnInitializeDevice(pDev); } break; . . . } StreamClassDeviceNotification( DeviceRequestComplete, pSrb->HwDeviceExtension, pSrb ); } 我查过SRB的相关资料,里面并没有响应Pnp消息的命令码,现在我想在驱动中处理Pnp消息,应该怎么做。 |
|