Поделиться через


функция обратного вызова 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, сделайте следующее:

  1. Выделение структуры DXGK_AGP_INTERFACE .

  2. Задайте для элемента Size значение sizeof(DXGK_AGP_INTERFACE).

  3. Задайте элемент Version . Константы версии определяются в Dispmprt.h (например, DXGK_AGP_INTERFACE_VERSION_1).

  4. Вызов DxgkCbQueryServices; Для параметра ServicesType задайте значение DxgkServicesAgp, а для параметра Interface — адрес (приведение к PINTERFACE) структуры DXGK_AGP_INTERFACE .

  5. При возвращении из DxgkCbQueryServices структура DXGK_AGP_INTERFACE будет содержать указатели на функции интерфейса AGP; например , AgpAllocatePool.

Получение интерфейса отчета отладки

Чтобы получить интерфейс отчета об отладке, сделайте следующее:

  1. Выделение структуры DXGK_DEBUG_REPORT_INTERFACE .

  2. Задайте для элемента Size значение sizeof(DXGK_DEBUG_REPORT_INTERFACE).

  3. Задайте элемент Version . Константы версии определяются в Файле Dispmprt.h (например, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).

  4. Вызов DxgkCbQueryServices; Для параметра ServicesType задайте значение DxgkServicesDebugReport, а для параметра Interface — адрес (приведение к PINTERFACE) структуры DXGK_DEBUG_REPORT_INTERFACE .

  5. При возвращении из DxgkCbQueryServices структура DXGK_DEBUG_REPORT_INTERFACE будет содержать указатели на функции интерфейса отчета отладки; Например, DbgReportCreate.

Получение интерфейса timed Operation

Чтобы получить интерфейс timed Operation, сделайте следующее:

  1. Выделение структуры DXGK_TIMED_OPERATION_INTERFACE .

  2. Задайте для элемента Size значение sizeof(DXGK_TIMED_OPERATION_INTERFACE).

  3. Задайте элемент Version . Константы версии определяются в Dispmprt.h (например, DXGK_TIMED_OPERATION_INTERFACE_VERSION_1).

  4. Вызов DxgkCbQueryServices; Для параметра ServicesType задайте значение DxgkServicesTimedOperation, а для параметра Interface — адрес (приведение к PINTERFACE) структуры DXGK_TIMED_OPERATION_INTERFACE .

  5. При возвращении из DxgkCbQueryServices структура DXGK_TIMED_OPERATION_INTERFACE будет содержать указатели на функции интерфейса timed Operation; Например, TimedOperationStart.

Получение интерфейсов SPB и таблицы встроенного ПО системы

Интерфейсы простой периферийной шины (SPB) и таблицы встроенного ПО системы можно получить аналогичным образом, выполнив описанные выше действия, используя соответствующие servicesType и структуру.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Целевая платформа Персональный компьютер
Верхняя часть dispmprt.h (включая Dispmprt.h)
IRQL PASSIVE_LEVEL

См. также раздел

DXGK_AGP_INTERFACE

DxgkDdiStartDevice

DXGK_DEBUG_REPORT_INTERFACE

DXGK_FIRMWARE_TABLE_INTERFACE

DXGK_SERVICES

DXGK_SPB_INTERFACE

DXGK_TIMED_OPERATION_INTERFACE

DXGKRNL_INTERFACE

ИНТЕРФЕЙС