/*++ Routine Description: Registers with WMI as a data provider for this instance of the device Arguments: Device - Handle to the mini Uart device Return Value: Status --*/ _Use_decl_annotations_ NTSTATUS SerialWmiRegistration( WDFDEVICE Device ) { NTSTATUS status = STATUS_SUCCESS; PSERIAL_DEVICE_EXTENSION devExt; PAGED_CODE(); TraceEvents(TRACE_LEVEL_INFORMATION, DBG_WMI, "++SerialWmiRegistration\r\n"); devExt = SerialGetDeviceExtension (Device); // Fill in wmi perf data (all zero's) RtlZeroMemory(&devExt->WmiPerfData, sizeof(devExt->WmiPerfData)); status = SerialWmiRegisterInstance(Device, &MSSerial_PortName_GUID, 0, EvtWmiQueryPortName); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, DBG_WMI, "SerialWmiRegistration() SerialWmiRegisterInstance(serGUID) failed. Err=%Xh\r\n", status); goto EndWmiReg; } status = SerialWmiRegisterInstance(Device, &MSSerial_CommInfo_GUID, sizeof(SERIAL_WMI_COMM_DATA), EvtWmiQueryPortCommData); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, DBG_WMI, "SerialWmiRegistration() SerialWmiRegisterInstance(WMICOMDA) failed. Err=%Xh\r\n", status); goto EndWmiReg; } status = SerialWmiRegisterInstance(Device, &MSSerial_HardwareConfiguration_GUID, sizeof(SERIAL_WMI_HW_DATA), EvtWmiQueryPortHWData); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, DBG_WMI, "SerialWmiRegistration() SerialWmiRegisterInstance(WMIHWDAT) failed. Err=%Xh\r\n", status); return status; } status = SerialWmiRegisterInstance(Device, &MSSerial_PerformanceInformation_GUID, sizeof(SERIAL_WMI_PERF_DATA), EvtWmiQueryPortPerfData); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, DBG_WMI, "SerialWmiRegistration() SerialWmiRegisterInstance(WMIPERF) failed. Err=%Xh\r\n", status); goto EndWmiReg; } status = SerialWmiRegisterInstance(Device, &MSSerial_CommProperties_GUID, sizeof(SERIAL_COMMPROP) + sizeof(ULONG), EvtWmiQueryPortPropData); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, DBG_WMI, "SerialWmiRegistration() SerialWmiRegisterInstance(COMMPRPOP) failed. Err=%Xh\r\n", status); } EndWmiReg: TraceEvents(TRACE_LEVEL_INFORMATION, DBG_WMI, "--SerialWmiRegistration()=%Xh\r\n", status); return status; }
NTSTATUS SerialWmiRegistration( WDFDEVICE Device ) /*++ Routine Description Registers with WMI as a data provider for this instance of the device --*/ { NTSTATUS status = STATUS_SUCCESS; PSERIAL_DEVICE_EXTENSION pDevExt; PAGED_CODE(); pDevExt = SerialGetDeviceExtension (Device); // // Fill in wmi perf data (all zero's) // RtlZeroMemory(&pDevExt->WmiPerfData, sizeof(pDevExt->WmiPerfData)); status = SerialWmiRegisterInstance(Device, &MSSerial_PortName_GUID, 0, EvtWmiQueryPortName); if (!NT_SUCCESS(status)) { return status; } status = SerialWmiRegisterInstance(Device, &MSSerial_CommInfo_GUID, sizeof(SERIAL_WMI_COMM_DATA), EvtWmiQueryPortCommData); if (!NT_SUCCESS(status)) { return status; } status = SerialWmiRegisterInstance(Device, &MSSerial_HardwareConfiguration_GUID, sizeof(SERIAL_WMI_HW_DATA), EvtWmiQueryPortHWData); if (!NT_SUCCESS(status)) { return status; } status = SerialWmiRegisterInstance(Device, &MSSerial_PerformanceInformation_GUID, sizeof(SERIAL_WMI_PERF_DATA), EvtWmiQueryPortPerfData); if (!NT_SUCCESS(status)) { return status; } status = SerialWmiRegisterInstance(Device, &MSSerial_CommProperties_GUID, sizeof(SERIAL_COMMPROP) + sizeof(ULONG), EvtWmiQueryPortPropData); if (!NT_SUCCESS(status)) { return status; } return status; }