функция обратного вызова 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 (включая Wudfwdm.h) |
IRQL | Вызывается по адресу IRQL <= DISPATCH_LEVEL. |