mirror of
https://github.com/reactos/reactos.git
synced 2024-06-29 01:12:06 +00:00
[NTOSKRNL] IopGetDeviceProperty: Send an IRP_MN_QUERY_CAPABILITIES request to the device in order to query the power capabilities.
This commit is contained in:
parent
dd11f4c34b
commit
12fdc129cf
|
@ -359,18 +359,32 @@ IopGetDeviceProperty(PPLUGPLAY_CONTROL_PROPERTY_DATA PropertyData)
|
|||
}
|
||||
else
|
||||
{
|
||||
// DEVICE_CAPABILITIES DeviceCapabilities;
|
||||
DEVICE_CAPABILITIES DeviceCapabilities;
|
||||
PCM_POWER_DATA PowerData;
|
||||
|
||||
// Status = IopQueryDeviceCapabilities(DeviceNode, &DeviceCapabilities);
|
||||
IO_STACK_LOCATION Stack;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
|
||||
PowerData = (PCM_POWER_DATA)Buffer;
|
||||
|
||||
RtlZeroMemory(PowerData, sizeof(CM_POWER_DATA));
|
||||
PowerData->PD_Size = sizeof(CM_POWER_DATA);
|
||||
// PowerData->PD_MostRecentPowerState;
|
||||
PowerData->PD_Capabilities = PDCAP_D0_SUPPORTED | PDCAP_D3_SUPPORTED;
|
||||
/*
|
||||
|
||||
RtlZeroMemory(&DeviceCapabilities, sizeof(DEVICE_CAPABILITIES));
|
||||
DeviceCapabilities.Size = sizeof(DEVICE_CAPABILITIES);
|
||||
DeviceCapabilities.Version = 1;
|
||||
DeviceCapabilities.Address = -1;
|
||||
DeviceCapabilities.UINumber = -1;
|
||||
|
||||
Stack.Parameters.DeviceCapabilities.Capabilities = &DeviceCapabilities;
|
||||
|
||||
Status = IopInitiatePnpIrp(DeviceObject,
|
||||
&IoStatusBlock,
|
||||
IRP_MN_QUERY_CAPABILITIES,
|
||||
&Stack);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT("Got device capabiliities\n");
|
||||
|
||||
PowerData->PD_MostRecentPowerState = PowerDeviceD0; // FIXME
|
||||
if (DeviceCapabilities.DeviceD1)
|
||||
PowerData->PD_Capabilities |= PDCAP_D1_SUPPORTED;
|
||||
if (DeviceCapabilities.DeviceD2)
|
||||
|
@ -392,7 +406,14 @@ IopGetDeviceProperty(PPLUGPLAY_CONTROL_PROPERTY_DATA PropertyData)
|
|||
&DeviceCapabilities.DeviceState,
|
||||
sizeof(DeviceCapabilities.DeviceState));
|
||||
PowerData->PD_DeepestSystemWake = DeviceCapabilities.SystemWake;
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINT("IRP_MN_QUERY_CAPABILITIES failed (Status 0x%08lx)\n", Status);
|
||||
|
||||
PowerData->PD_Capabilities = PDCAP_D0_SUPPORTED | PDCAP_D3_SUPPORTED;
|
||||
PowerData->PD_MostRecentPowerState = PowerDeviceD0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (Property == PNP_PROPERTY_REMOVAL_POLICY_OVERRIDE)
|
||||
|
|
Loading…
Reference in a new issue