функция обратного вызова 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
Указатель на структуру интерфейса , которая получает запрошенный интерфейс.
Возвращаемое значение
DxgkCbQueryServices возвращает STATUS_SUCCESS в случае успешного выполнения. В противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.
Замечания
Интерфейс в этом контексте представляет собой набор функций, реализованных драйвером порта отображения. Драйвер порта отображения делает функции интерфейса доступными для других драйверов, предоставляя указатели функций в ответ на DxgkCbQueryServices.
Получение интерфейса AGP
Чтобы получить интерфейс ускорения графического порта (AGP), сделайте следующее:
Выделите структуру DXGK_AGP_INTERFACE.
Задайте для элемента размер значение sizeof(DXGK_AGP_INTERFACE).
Задайте элемент версии. Константы версий определены в Dispmprt.h (например, DXGK_AGP_INTERFACE_VERSION_1).
Вызов DxgkCbQueryServices; задайте ServicesType значение DxgkServicesAgpи задайте интерфейс (приведение как PINTERFACE) структуры DXGK_AGP_INTERFACE.
При возврате из DxgkCbQueryServicesструктура DXGK_AGP_INTERFACE будет содержать указатели на функции интерфейса AGP; например, AgpAllocatePool.
Получение интерфейса отчета отладки
Чтобы получить интерфейс отчета отладки, сделайте следующее:
Выделите структуру DXGK_DEBUG_REPORT_INTERFACE.
Задайте для элемента размер значение sizeof(DXGK_DEBUG_REPORT_INTERFACE).
Задайте элемент версии. Константы версий определяются в Dispmprt.h (например, DXGK_DEBUG_REPORT_INTERFACE_VERSION_1).
Вызов DxgkCbQueryServices; задайте ServicesType значение DxgkServicesDebugReportи задайте интерфейса адрес (приведение как PINTERFACE) структуры DXGK_DEBUG_REPORT_INTERFACE.
При возврате из DxgkCbQueryServicesструктура DXGK_DEBUG_REPORT_INTERFACE будет содержать указатели на функции интерфейса отчета отладки; например, DbgReportCreate.
Получение интерфейса операции timed
Чтобы получить интерфейс операций timed, выполните следующие действия.
Выделите DXGK_TIMED_OPERATION_INTERFACE структуру.
Задайте для элемента size значение sizeof(DXGK_TIMED_OPERATION_INTERFACE).
Задайте элемент версии. Константы версий определяются в Dispmprt.h (например, DXGK_TIMED_OPERATION_INTERFACE_VERSION_1).
Вызов DxgkCbQueryServices; задайте ServicesType значение DxgkServicesTimedOperationи задайте интерфейса в адрес (приведение как PINTERFACE) структуры DXGK_TIMED_OPERATION_INTERFACE.
При возврате из DxgkCbQueryServicesструктура DXGK_TIMED_OPERATION_INTERFACE будет содержать указатели на функции интерфейса операций timed; например, TimedOperationStart.
Получение интерфейсов таблиц SPB и системного встроенного ПО
Интерфейсы простой периферийной шины (SPB) и системной таблицы встроенного ПО можно получить аналогичным образом, выполнив описанные выше действия, используя соответствующие ServicesType и структуру.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
целевая платформа | Настольный |
заголовка | dispmprt.h (include Dispmprt.h) |
IRQL | PASSIVE_LEVEL |