Функция DxgkInitialize (dispmprt.h)
В режиме ядра отображается функция драйвера минипорта (KMD) DriverEntry, которая вызывает системную функцию DxgkInitialize для загрузки и инициализации подсистемы ядра графики DirectX (Dxgkrnl.sys).
Синтаксис
NTSTATUS DxgkInitialize(
[in] PDRIVER_OBJECT DriverObject,
[in] PUNICODE_STRING RegistryPath,
[in] PDRIVER_INITIALIZATION_DATA DriverInitializationData
);
Параметры
[in] DriverObject
Указатель на структуру DRIVER_OBJECT. ОПЕРАЦИОННая система передает DriverObject kmD при вызове процедуры DriverEntry KMD.
[in] RegistryPath
Указатель на UNICODE_STRING, который предоставляет путь к разделу реестра службы драйвера. ОС передает
[in] DriverInitializationData
Указатель на структуру DRIVER_INITIALIZATION_DATA, которая предоставляет Dxgkrnl указателями на функции, реализованные KMD.
Возвращаемое значение
DxgkInitialize возвращает STATUS_SUCCESS, если он выполнен успешно; в противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.
Замечания
В следующем примере кода показана реализация DriverEntry, в которой вызывается DxgkInitialize.
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
DRIVER_INITIALIZATION_DATA DriverInitializationData = {'\0'};
PAGED_CODE();
if (! ARGUMENT_PRESENT(DriverObject) ||
! ARGUMENT_PRESENT(RegistryPath))
{
return STATUS_INVALID_PARAMETER;
}
// Fill in the DriverInitializationData structure and call DxgkInitialize()
DriverInitializationData.Version = DXGKDDI_INTERFACE_VERSION;
DriverInitializationData.DxgkDdiAddDevice = MyKMDAddDevice;
DriverInitializationData.DxgkDdiStartDevice = MyKMDStartDevice;
DriverInitializationData.DxgkDdiStopDevice = MyKMDStopDevice;
DriverInitializationData.DxgkDdiRemoveDevice = MyKMDRemoveDevice;
DriverInitializationData.DxgkDdiDispatchIoRequest = MyKMDDispatchIoRequest;
DriverInitializationData.DxgkDdiInterruptRoutine = MyKMDInterruptRoutine;
DriverInitializationData.DxgkDdiDpcRoutine = MyKMDDpcRoutine;
DriverInitializationData.DxgkDdiQueryChildRelations = MyKMDQueryChildRelations;
DriverInitializationData.DxgkDdiQueryChildStatus = MyKMDQueryChildStatus;
DriverInitializationData.DxgkDdiQueryDeviceDescriptor = MyKMDQueryDeviceDescriptor;
DriverInitializationData.DxgkDdiSetPowerState = MyKMDSetPowerState;
DriverInitializationData.DxgkDdiNotifyAcpiEvent = MyKMDNotifyAcpiEvent;
DriverInitializationData.DxgkDdiResetDevice = MyKMDResetDevice;
DriverInitializationData.DxgkDdiUnload = MyKMDUnload;
DriverInitializationData.DxgkDdiQueryInterface = MyKMDQueryInterface;
DriverInitializationData.DxgkDdiControlEtwLogging = MyKMDControlEtwLogging;
DriverInitializationData.DxgkDdiQueryAdapterInfo = MyKMDQueryAdapterInfo;
DriverInitializationData.DxgkDdiCreateDevice = MyKMDCreateDevice;
DriverInitializationData.DxgkDdiCreateAllocation = MyKMDCreateAllocation;
DriverInitializationData.DxgkDdiDestroyAllocation = MyKMDDestroyAllocation;
DriverInitializationData.DxgkDdiCreateOverlay = MyKMDCreateOverlay;
DriverInitializationData.DxgkDdiUpdateOverlay = MyKMDUpdateOverlay;
DriverInitializationData.DxgkDdiFlipOverlay = MyKMDFlipOverlay;
DriverInitializationData.DxgkDdiDestroyOverlay = MyKMDDestroyOverlay;
DriverInitializationData.DxgkDdiDescribeAllocation = MyKMDDescribeAllocation;
DriverInitializationData.DxgkDdiGetStandardAllocationDriverData = MyKMDGetStandardAllocationDriverData;
DriverInitializationData.DxgkDdiAcquireSwizzlingRange = MyKMDAcquireSwizzlingRange;
DriverInitializationData.DxgkDdiReleaseSwizzlingRange = MyKMDReleaseSwizzlingRange;
DriverInitializationData.DxgkDdiOpenAllocation = MyKMDOpenAllocation;
DriverInitializationData.DxgkDdiCloseAllocation = MyKMDCloseAllocation;
DriverInitializationData.DxgkDdiPatch = MyKMDPatchDmaBuffer;
DriverInitializationData.DxgkDdiSubmitCommand = MyKMDSubmitCommand;
DriverInitializationData.DxgkDdiBuildPagingBuffer = MyKMDBuildPagingBuffer;
DriverInitializationData.DxgkDdiSetPalette = MyKMDSetPalette;
DriverInitializationData.DxgkDdiSetPointerShape = MyKMDSetPointerShape;
DriverInitializationData.DxgkDdiSetPointerPosition = MyKMDSetPointerPosition;
DriverInitializationData.DxgkDdiPreemptCommand = MyKMDPreemptCommand;
DriverInitializationData.DxgkDdiDestroyDevice = MyKMDDestroyDevice;
DriverInitializationData.DxgkDdiRender = MyKMDRender;
DriverInitializationData.DxgkDdiRenderKm = MyKMDRenderKm; DriverInitializationData.DxgkDdiPresent = MyKMDPresent;
DriverInitializationData.DxgkDdiResetFromTimeout = MyKMDResetFromTimeout;
DriverInitializationData.DxgkDdiRestartFromTimeout = MyKMDRestartFromTimeout;
DriverInitializationData.DxgkDdiEscape = MyKMDEscape;
DriverInitializationData.DxgkDdiCollectDbgInfo = MyKMDCollectDbgInfo;
DriverInitializationData.DxgkDdiQueryCurrentFence = MyKMDQueryCurrentFence;
DriverInitializationData.DxgkDdiControlInterrupt = MyKMDControlInterrupt;
DriverInitializationData.DxgkDdiGetScanLine = MyKMDGetScanLine;
DriverInitializationData.DxgkDdiStopCapture = MyKMD DxgkDdiStopCapture; DriverInitializationData.DxgkDdiSetVidPnSourceAddress = MyKMDSetVidPnSourceAddress;
DriverInitializationData.DxgkDdiSetVidPnSourceVisibility = MyKMDSetVidPnSourceVisibility;
DriverInitializationData.DxgkDdiUpdateActiveVidPnPresentPath = MyKMDUpdateActiveVidPnPresentPath;
DriverInitializationData.DxgkDdiCommitVidPn = MyKMDCommitVidPn;
DriverInitializationData.DxgkDdiRecommendMonitorModes = MyKMDRecommendMonitorModes;
DriverInitializationData.DxgkDdiRecommendVidPnTopology = MyKMDRecommendVidPnTopology;
DriverInitializationData.DxgkDdiCreateContext = MyKMDCreateContext;
DriverInitializationData.DxgkDdiDestroyContext = MyKMDDestroyContext;
DriverInitializationData.DxgkDdiLinkDevice = MyKMDLinkDevice;
DriverInitializationData.DxgkDdiSetDisplayPrivateDriverFormat = MyKMDSetDisplayPrivateDriverFormat;
DriverInitializationData.DxgkDdiRecommendFunctionalVidPn = MyKMDRecommendFunctionalVidPn_XddmParity;
DriverInitializationData.DxgkDdiEnumVidPnCofuncModality = MyKMDEnumVidPnCofuncModality_XddmParity;
DriverInitializationData.DxgkDdiIsSupportedVidPn = MyKMDIsSupportedVidPn_XddmParity;
DriverInitializationData.DxgkDdiQueryVidPnHWCapability = MyKMD DxgkDdiQueryVidPnHWCapability;
return DxgkInitialize(DriverObject,
RegistryPath,
&DriverInitializationData);
}
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista (WDDM 1.0) |
целевая платформа | Настольный |
заголовка | dispmprt.h (include Dispmprt.h) |
IRQL | PASSIVE_LEVEL |