Share via


Método IAdapterPowerManagement::QueryDeviceCapabilities (portcls.h)

QueryDeviceCapabilities PortCls llama al método en respuesta a un Plug and Play IRP_MN_QUERY_CAPABILITIES IRP.

Sintaxis

NTSTATUS QueryDeviceCapabilities(
  [in] PDEVICE_CAPABILITIES PowerDeviceCaps
);

Parámetros

[in] PowerDeviceCaps

Puntero a una estructura de DEVICE_CAPABILITIES que especifica las funcionalidades del dispositivo

Valor devuelto

QueryDeviceCapabilities devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, el método devuelve un código de error adecuado.

Comentarios

Este método se llama al inicio del controlador para obtener las funcionalidades del dispositivo. El método pasa al controlador del adaptador una estructura de funcionalidades que define las asignaciones entre los estados de energía del sistema y los estados de energía del dispositivo. PortCls escribe los valores predeterminados para estas asignaciones en la estructura antes de llamar al método . Durante la llamada, el controlador del adaptador tiene la oportunidad de editar las asignaciones, si es necesario.

Normalmente, el controlador del adaptador no debe cambiar esta configuración. Si el controlador del adaptador debe invalidar los valores predeterminados, puede cambiar las asignaciones a un estado de alimentación de dispositivo más profundo (menos alimentado), pero no a un estado de alimentación de dispositivo más débil (más alimentado). Por ejemplo, las asignaciones de S1 (PowerSystemSleeping1) se pueden cambiar de D1 a D3, pero no a D0.

Para rellenar la estructura PowerDeviceCaps de un dispositivo, el controlador del adaptador debe llamar a PcRegisterAdapterPowerManagement para registrar la interfaz IAdapterPowerManagement en tiempo de inicio del dispositivo. El sistema operativo consulta los dispositivos antes de llamar a la rutina de inicio del dispositivo del controlador del adaptador.

Para cambiar las asignaciones entre los estados de energía del sistema y los estados de energía del dispositivo, el controlador del adaptador cambia los valores de la matriz DeviceState en la estructura PowerDeviceCaps . Estas asignaciones solo deben cambiarse si es necesario. En el ejemplo de código siguiente se muestra cómo asignar asignaciones D1 a D3:

  for (i=ULONG(PowerSystemWorking); i<=ULONG(PowerSystemShutdown); i++)
      {
          if (PowerDeviceCaps->DeviceState[i] == PowerDeviceD1)
          {
              PowerDeviceCaps->DeviceState[i] = PowerDeviceD3;
          }
      }

El código del QueryDeviceCapabilities método debe residir en la memoria paginada.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado portcls.h (incluir Portcls.h)

Consulte también

DEVICE_CAPABILITIES

IAdapterPowerManagement

IRP_MN_QUERY_CAPABILITIES

PcRegisterAdapterPowerManagement