функция обратного вызова GET_D3COLD_CAPABILITY (wdm.h)

Подпрограмма обратного вызова GET_D3COLD_CAPABILITY используется для двух различных функций в D3COLD_SUPPORT_INTERFACE:

  • GetD3ColdCapability — сообщает, может ли это устройство вводить состояние питания устройства D3cold.
  • GetBusDriverD3ColdSupport — сообщает, поддерживает ли базовый драйвер шины и системное встроенное ПО ACPI D3cold для этого устройства.

Синтаксис

GET_D3COLD_CAPABILITY GetD3coldCapability;

NTSTATUS GetD3coldCapability(
  [in, optional] PVOID Context,
  [out]          PBOOLEAN D3ColdSupported
)
{...}

Параметры

[in, optional] Context

Указатель на сведения о контексте для интерфейса. Вызывающий объект задает этому параметру значение Context член структуры D3COLD_SUPPORT_INTERFACE для интерфейса.

[out] D3ColdSupported

Указатель на переменную BOOLEAN, в которую подпрограмма записывает значение, указывающее состояние поддержки D3cold. Значение этого значения зависит от вызываемой функции:

  • GetD3ColdCapability: если true, устройство может вводить D3cold. Если значение FALSE, устройство не может вводить D3cold.
  • GetBusDriverD3ColdSupport: если значение TRUE, драйвер шины поддерживает D3cold. Если значение FALSE, драйвер шины не поддерживает D3cold.

Если вызов завершается сбоем, подпрограмма возвращает код состояния ошибки и не записывает ничего в эту переменную.

Возвращаемое значение

Подпрограмма GET_D3COLD_CAPABILITY возвращает STATUS_SUCCESS, если она выполнена успешно. В противном случае возвращается соответствующий код состояния ошибки.

Замечания

Этот тип функции обратного вызова используется для двух разных подпрограмм в D3COLD_SUPPORT_INTERFACE:

  • GetD3ColdCapability — сообщает, может ли это устройство вводить состояние питания устройства D3cold.
  • GetBusDriverD3ColdSupport — сообщает, поддерживает ли базовый драйвер шины и системное встроенное ПО ACPI D3cold для этого устройства.

Использование GetBusDriverD3ColdSupport

Драйвер для устройства вызывает версию этой подпрограммы, реализованную драйвером Windows ACPI, Acpi.sys. Эта подпрограмма проверяет родительский драйвер шины для устройства, чтобы определить, поддерживает ли этот драйвер питания D3cold.

Например, начиная с Windows 8 корпорация Майкрософт предоставляет драйвер контроллера контроллера узла (xHCI), поддерживающий D3cold usb 3.0 eXtensible. Некоторые сторонние поставщики оборудования предоставляют драйверы Windows для своих контроллеров xHCI, но эти драйверы могут не поддерживать D3cold. Драйвер устройства USB 3.0 может вызывать GetBusDriverD3ColdSupport, чтобы определить, поддерживает ли родительский драйвер контроллера xHCI D3cold.

Водитель шины поддерживает D3cold, если все из следующих значений имеют значение true:

  • Драйвер шины реализует интерфейс драйвера GUID_D3COLD_SUPPORT_INTERFACE.
  • Драйвер шины реализует подпрограмму GetBusDriverD3ColdSupport в этом интерфейсе.
  • Выходное значение из GetBusDriverD3ColdSupport указывает, что драйвер шины поддерживает D3cold.

Драйвер для устройства может вызвать подпрограмму GetIdleWakeInfo , чтобы определить, поддерживают ли базовые драйверы шины и системное встроенное ПО ACPI D3cold для устройства. Если этот вызов завершается ошибкой и возвращает код состояния ошибки, драйвер устройства может вызвать процедуру GetBusDriverD3ColdSupport, чтобы определить, вызвана ли ошибка отсутствием поддержки D3cold драйвером родительской шины.

Устройство на шине может перейти к подстатю D3cold только в том случае, если водитель шины поддерживает этот переход. Если драйвер шины не поддерживает D3cold, устройство никогда не вводит D3cold, даже если драйвер-функция для устройства вызывает подпрограмму SetD3ColdSupport , чтобы включить переход на D3cold. В этом случае SetD3ColdSupport вызовы не влияют, но безвредны.

По этой причине большинство драйверов устройств никогда не должны вызывать подпрограмму GetBusDriverD3ColdSupport.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 8
целевая платформа Настольный
заголовка wdm.h (include Wdm.h)
IRQL PASSIVE_LEVEL

См. также

D3COLD_SUPPORT_INTERFACE

GetIdleWakeInfo

SetD3ColdSupport