функция обратного вызова DXGKCB_QUERY_SERVICES (dispmprt.h)
Функция DxgkCbQueryServices возвращает интерфейс, реализованный драйвером порта отображения.
Синтаксис
DXGKCB_QUERY_SERVICES DxgkcbQueryServices;
NTSTATUS DxgkcbQueryServices(
[in] HANDLE DeviceHandle,
[in] DXGK_SERVICES ServicesType,
[in, out] PINTERFACE Interface
)
{...}
Параметры
[in] DeviceHandle
Дескриптор, представляющий видеоадаптер. Драйвер мини-порта дисплея ранее получил этот дескриптор в элементе DeviceHandleструктуры DXGKRNL_INTERFACE , переданной в DxgkDdiStartDevice.
[in] ServicesType
Константой из перечисления DXGK_SERVICES , указывающей, какой интерфейс запрашивается.
[in, out] Interface
Указатель на структуру INTERFACE , которая получает запрошенный интерфейс.
Возвращаемое значение
DxgkCbQueryServices возвращает STATUS_SUCCESS в случае успешного выполнения. В противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.
Комментарии
Интерфейс в этом контексте — это набор функций, реализованных драйвером порта отображения. Драйвер порта отображения делает функции интерфейса доступными для других драйверов, предоставляя указатели функций в ответ на DxgkCbQueryServices.
Получение интерфейса AGP
Чтобы получить интерфейс AGP, сделайте следующее:
Выделение структуры DXGK_AGP_INTERFACE .
Задайте для элемента Size значение sizeof(DXGK_AGP_INTERFACE).
Задайте элемент Version . Константы версии определяются в Dispmprt.h (например, DXGK_AGP_INTERFACE_VERSION_1).
Вызов DxgkCbQueryServices; Для параметра ServicesType задайте значение DxgkServicesAgp, а для параметра Interface — адрес (приведение к PINTERFACE) структуры DXGK_AGP_INTERFACE .
При возвращении из DxgkCbQueryServices структура DXGK_AGP_INTERFACE будет содержать указатели на функции интерфейса AGP; например , AgpAllocatePool.
Получение интерфейса отчета отладки
Чтобы получить интерфейс отчета об отладке, сделайте следующее:
Выделение структуры DXGK_DEBUG_REPORT_INTERFACE .
Задайте для элемента Size значение sizeof(DXGK_DEBUG_REPORT_INTERFACE).
Задайте элемент Version . Константы версии определяются в Файле Dispmprt.h (например, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).
Вызов DxgkCbQueryServices; Для параметра ServicesType задайте значение DxgkServicesDebugReport, а для параметра Interface — адрес (приведение к PINTERFACE) структуры DXGK_DEBUG_REPORT_INTERFACE .
При возвращении из DxgkCbQueryServices структура DXGK_DEBUG_REPORT_INTERFACE будет содержать указатели на функции интерфейса отчета отладки; Например, DbgReportCreate.
Получение интерфейса timed Operation
Чтобы получить интерфейс timed Operation, сделайте следующее:
Выделение структуры DXGK_TIMED_OPERATION_INTERFACE .
Задайте для элемента Size значение sizeof(DXGK_TIMED_OPERATION_INTERFACE).
Задайте элемент Version . Константы версии определяются в Dispmprt.h (например, DXGK_TIMED_OPERATION_INTERFACE_VERSION_1).
Вызов DxgkCbQueryServices; Для параметра ServicesType задайте значение DxgkServicesTimedOperation, а для параметра Interface — адрес (приведение к PINTERFACE) структуры DXGK_TIMED_OPERATION_INTERFACE .
При возвращении из DxgkCbQueryServices структура DXGK_TIMED_OPERATION_INTERFACE будет содержать указатели на функции интерфейса timed Operation; Например, TimedOperationStart.
Получение интерфейсов SPB и таблицы встроенного ПО системы
Интерфейсы простой периферийной шины (SPB) и таблицы встроенного ПО системы можно получить аналогичным образом, выполнив описанные выше действия, используя соответствующие servicesType и структуру.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Целевая платформа | Персональный компьютер |
Верхняя часть | dispmprt.h (включая Dispmprt.h) |
IRQL | PASSIVE_LEVEL |