Windows 显示驱动开发-微型端口的DriverEntry 函数

发布于:2025-05-02 ⋅ 阅读:(45) ⋅ 点赞:(0)

DriverEntry 函数为 DirectX 图形内核子系统 (Dxgkrnl) 提供了一组指向显示微型端口驱动程序 (KMD) 实现的函数的指针。

NTSTATUS DriverEntry(
  _In_ PDRIVER_OBJECT  DriverObject,
  _In_ PUNICODE_STRING RegistryPath
);
参数

DriverObject 是指向 DRIVER_OBJECT 结构的指针,该结构表示由(显示微型端口、显示端口)驱动程序对构成的驱动程序。

RegistryPath 是指向 UNICODE_STRING 结构的指针,该结构提供驱动程序注册表项的路径。

返回值

DriverEntry 必须返回调用 DxgkInitialize 返回的值。

注解

DriverEntry 必须执行以下步骤:

  • 分配一个 DRIVER_INITIALIZATION_DATA 结构,并将其 Version 成员设置为 DXGKDDI_INTERFACE_VERSION,该成员在 Dispmprt.h 中定义。
  • 用指向 KMD 实现的函数的指针填充 DRIVER_INITIALIZATION_DATA 的其余成员。
  • 将 DriverObject、RegistryPath 和填充 DRIVER_INITIALIZATION_DATA 结构传递给 DxgkInitialize。
  • 返回由 DxgkInitialize 返回的值。

在 DriverEntry 返回后,DRIVER_INITIALIZATION_DATA 结构不需要保留在内存中。DriverEntry 应可分页。

仅限内核模式显示驱动程序的 DriverEntry

对于仅限内核模式显示驱动程序 (KMDOD) 接口, KMDDOD_INITIALIZATION_DATA 结构列出了可由 KMDOD 实现的所有函数。 除 DxgkDdiPresentDisplayOnly 函数外,所有这些函数也可以由全显示微型端口驱动程序 (KMD) 实现。 KMDOD 的 DriverEntry 函数通过填充 KMDDOD_INITIALIZATION_DATA 的所有成员,然后将该结构传递给 DxgkInitializeDisplayOnlyDriver 函数,为显示端口驱动程序提供函数指针。

如果 KMDOD 不支持 VSync 控件功能,则不应实现某些函数。 请参阅使用 VSync 控件节省能源。

以下结构和枚举也与 KMDOD 一起使用:

D3DKMT_MOVE_RECT
D3DKMT_PRESENT_DISPLAY_ONLY_FLAGS
DXGK_PRESENT_DISPLAY_ONLY_PROGRESS_ID
DXGKARG_PRESENT_DISPLAYONLY
DXGKARGCB_PRESENT_DISPLAYONLY_PROGRESS


网站公告

今日签到

点亮在社区的每一天
去签到