VOID UpdatePdoInfoInLSBus( PMINIPORT_DEVICE_EXTENSION HwDeviceExtension, UINT32 AdapterStatus ) { PNDASBUS_SETPDOINFO busSet; NDAS_FEATURES supportedFeatures, enabledFeatures; ASSERT(HwDeviceExtension); // // Query to the LUR // if(HwDeviceExtension->LURs[0]) { KDPrint(4,("going to default LuExtention 0.\n")); supportedFeatures = HwDeviceExtension->LURs[0]->SupportedNdasFeatures; enabledFeatures = HwDeviceExtension->LURs[0]->EnabledNdasFeatures; } else { KDPrint(2,("No LUR available..\n")); supportedFeatures = enabledFeatures = 0; return; } KDPrint(2,("Set AdapterStatus=%x Supp=%x Enab=%x\n", AdapterStatus, supportedFeatures, enabledFeatures)); // // Send to LSBus // busSet = (PNDASBUS_SETPDOINFO)ExAllocatePoolWithTag(NonPagedPool, sizeof(NDASBUS_SETPDOINFO), NDSC_PTAG_IOCTL); if(busSet == NULL) { return; } busSet->Size = sizeof(NDASBUS_SETPDOINFO); busSet->SlotNo = HwDeviceExtension->SlotNumber; busSet->AdapterStatus = AdapterStatus; busSet->SupportedFeatures = supportedFeatures; busSet->EnabledFeatures = enabledFeatures; if(KeGetCurrentIrql() == PASSIVE_LEVEL) { IoctlToLanscsiBus( IOCTL_NDASBUS_SETPDOINFO, busSet, sizeof(NDASBUS_SETPDOINFO), NULL, 0, NULL); ExFreePoolWithTag(busSet, NDSC_PTAG_IOCTL); } else { // // IoctlToLanscsiBus_Worker() will free memory of BusSet. // IoctlToLanscsiBusByWorker( HwDeviceExtension->ScsiportFdoObject, IOCTL_NDASBUS_SETPDOINFO, busSet, sizeof(NDASBUS_SETPDOINFO) ); } }
VOID UpdatePdoInfoInLSBus( PMINIPORT_DEVICE_EXTENSION HwDeviceExtension, UINT32 AdapterStatus ) { PBUSENUM_SETPDOINFO BusSet; UINT32 DesiredAccess; UINT32 GrantedAccess; ASSERT(HwDeviceExtension); // // Query to the LUR // if(HwDeviceExtension->LURs[0]) { KDPrint(3,("going to default LuExtention 0.\n")); DesiredAccess = HwDeviceExtension->LURs[0]->DesiredAccess; GrantedAccess = HwDeviceExtension->LURs[0]->GrantedAccess; } else { KDPrint(1,("No LUR available..\n")); DesiredAccess = GrantedAccess = 0; return; } // // Send to LSBus // BusSet = (PBUSENUM_SETPDOINFO)ExAllocatePoolWithTag(NonPagedPool, sizeof(BUSENUM_SETPDOINFO), LSMP_PTAG_IOCTL); if(BusSet == NULL) { return; } BusSet->Size = sizeof(BUSENUM_SETPDOINFO); BusSet->SlotNo = HwDeviceExtension->SlotNumber; BusSet->AdapterStatus = AdapterStatus; BusSet->DesiredAccess = DesiredAccess; BusSet->GrantedAccess = GrantedAccess; if(KeGetCurrentIrql() == PASSIVE_LEVEL) { IoctlToLanscsiBus( IOCTL_LANSCSI_SETPDOINFO, BusSet, sizeof(BUSENUM_SETPDOINFO), NULL, 0, NULL); if(HwDeviceExtension->AlarmEventToService) { KeSetEvent(HwDeviceExtension->AlarmEventToService, IO_NO_INCREMENT, FALSE); } ExFreePoolWithTag(BusSet, LSMP_PTAG_IOCTL); } else { // // IoctlToLanscsiBus_Worker() will free memory of BusSet. // IoctlToLanscsiBusByWorker( HwDeviceExtension->ScsiportFdoObject, IOCTL_LANSCSI_SETPDOINFO, BusSet, sizeof(BUSENUM_SETPDOINFO), HwDeviceExtension->AlarmEventToService ); } }