WDDM 与XDDM开发的区别
和XDDM驱动开发一样,在新的WDDM驱动模型架构下,需要编写与之适配的Mini小端口驱动。
和XDDM驱动不一致的是,WDDM的显示驱动运行于应用层,并且其不使用GDI引擎,而是使用的是Direct3D 运行时库和DirectX图形内核子系统(Dxgkrnl.sys).
WDDM与XDDM开发的区别主要开发区别表现在以下几个方面:
DriverEntry函数中初始化的不同。WDDM中使用DRIVER_INITIALIZATION_DATA结构体初始化 DxgkInitialize 函数。。
XDDM使用VIDEO_HW_INITIALIZATION_DATA结构体初始化VideoPortInitialize函数。
mini小端口驱动程序通动态加载合适的DirectX图形内核子系统(Dxgkrnl.sys)。mini小端口驱动程序和DirectX图形内核子系统(Dxgkrnl.sys)通过接口相互调用。
在XDMM中,mini小端口驱动程序不再处理大多数的IOCTL请求,而在WDDM中,用户模式的显示驱动通过DirectX运行时库与DirectX图形内核子系统(Dxgkrnl.sys)通讯,而WDDM图形内核子系统又与显示微型端口驱动程序通信。
注意 以下IOCTL仍然在WDDM中使用,并且display miniport驱动程序必须处理它们:IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS
用户模式显示驱动程序必须实现并导出OpenAdapter函数,该函数将打开图形适配器的实例。用户模式显示驱动程序还必须实现CreateDevice函数,该函数创建处理呈现状态集合的显示设备的表示形式。
用户模式显示驱动程序的CreateResource函数以及显示微型端口驱动程序的dxgkdicreateallocation函数将取代XDDM中的DdCanCreateSurface、DdCreateSurface和D3dCreateSurfaceEx函数。
剩余的用户模式显示驱动程序函数实现了与XDDM的内核模式显示驱动程序相同的功能