функция обратного вызова PO_FX_POWER_CONTROL_CALLBACK (wdm.h)
Подпрограмма обратного вызова PowerControlCallback выполняет операцию управления питанием, запрашиваемую платформой управления питанием (PoFx).
Синтаксис
PO_FX_POWER_CONTROL_CALLBACK PoFxPowerControlCallback;
NTSTATUS PoFxPowerControlCallback(
PVOID DeviceContext,
[in] LPCGUID PowerControlCode,
[in, optional] PVOID InBuffer,
[in] SIZE_T InBufferSize,
[out, optional] PVOID OutBuffer,
[in] SIZE_T OutBufferSize,
[out, optional] PSIZE_T BytesReturned
)
{...}
Параметры
DeviceContext
[in] PowerControlCode
Указатель на код управления питанием. Этот код представляет собой значение GUID, указывающее запрошенную операцию.
[in, optional] InBuffer
Указатель на буфер, содержащий входные данные для операции. Формат данных в этом буфере зависит от кода управления питанием, заданного параметром PowerControlCode. Параметр InBuffer необязателен и может быть указан как NULL, если указанная операция не требует входных данных.
[in] InBufferSize
Размер в байтах входного буфера, на который указывает параметр InBuffer. Если InBuffer имеет значение NULL, этот параметр равен нулю.
[out, optional] OutBuffer
Указатель на буфер, в который подпрограмма обратного вызова записывает выходные данные из операции. Формат данных в этом буфере зависит от кода управления питанием, заданного параметром PowerControlCode. Параметр OutBuffer необязателен и может быть указан как NULL, если указанная операция не создает выходных данных.
[in] OutBufferSize
Размер в байтах выходного буфера, на который указывает параметр OutBuffer. Если OutBuffer имеет значение NULL, этот параметр равен нулю.
[out, optional] BytesReturned
Указатель на расположение, в которое подпрограмма записывает количество байтов данных, записанных в буфер, на который указывает OutBuffer. Число записанных байтов должно быть меньше или равно OutBufferSize. Этот параметр является необязательным и может быть указан как NULL, если вызывающий объект не должен знать, сколько байтов было записано в выходной буфер.
Возвращаемое значение
Подпрограмма PowerControlCallback возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код ошибки.
Замечания
PoFx вызывает эту подпрограмму для отправки запроса на управление питанием непосредственно драйверу устройства. Запрос управления питанием аналогичен запросу на управление ввода-вывода (IOCTL). В отличие от IOCTL, однако запрос на управление питанием отправляется непосредственно драйверу и не наблюдается другими драйверами устройств в стеке устройств. Во время вызова PowerControlCallback драйвер синхронно выполняет запрошенную операцию.
Эта подпрограмма является необязательной. Драйвер устройства, который не поддерживает операции управления питанием, не требуется для реализации подпрограммы PowerControlCallback.
Драйвер устройства может вызвать процедуру PoFxPowerControl для отправки запроса на управление питанием в PoFx.
Дополнительные сведения о запросах на управление питанием см. в PoFxPowerControl.
Примеры
Чтобы определить подпрограмму обратного вызова PowerControlCallback, необходимо сначала указать объявление функции, определяющее тип определяемой процедуры обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализ кода для драйверов, статический проверяющий драйвер (SDV) и другие средства проверки подлинности, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить подпрограмму обратного вызова PowerControlCallback с именем MyPowerControlCallback
, используйте тип PO_FX_POWER_CONTROL_CALLBACK, как показано в этом примере кода:
PO_FX_POWER_CONTROL_CALLBACK MyPowerControlCallback;
Затем реализуйте подпрограмму обратного вызова следующим образом:
_Use_decl_annotations_
NTSTATUS
MyPowerControlCallback(
PVOID Context,
LPCGUID PowerControlCode,
PVOID InBuffer,
SIZE_T InBufferSize,
PVOID OutBuffer,
SIZE_T OutBufferSize,
PSIZE_T BytesReturned
)
{
// Function body
}
Тип функции PO_FX_POWER_CONTROL_CALLBACK определен в файле заголовка Wdm.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции _Use_decl_annotations_
заметку. Заметка _Use_decl_annotations_
гарантирует, что используются заметки, применяемые к типу функции PO_FX_POWER_CONTROL_CALLBACK в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в объявлении функций с помощью типов ролей функций для драйверов WDM. Сведения о _Use_decl_annotations_
см. в поведению функции.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается начиная с Windows 8. |
целевая платформа | Настольный |
заголовка | wdm.h (include Wudfwdm.h) |
IRQL | Вызывается в IRQL <= DISPATCH_LEVEL. |