DXGKDDI_ADD_DEVICE callback function
该DDI创建了该显卡的context并将代表该显卡的句柄返回。
Syntax
DXGKDDI_ADD_DEVICE DxgkddiAddDevice;
NTSTATUS DxgkddiAddDevice(
IN_CONST_PDEVICE_OBJECT PhysicalDeviceObject,
OUT_PPVOID MiniportDeviceContext
)
{...}
Parameters
PhysicalDeviceObject
标识显卡的指向physical device object (PDO) 的指针。
MiniportDeviceContext
接收代表PhysicalDeviceObject对象的显卡句柄的指针,该句柄由KMD创建。KMD可以返回NULL代表该PhysicalDeviceObject不支持创建context。
Return Value
DxgkDdiAddDevice returns STATUS_SUCCESS if it succeeds; otherwise, it returns one of the error codes defined in Ntstatus.h.
Remarks
DxgkDdiAddDevice 分配了私有context,其关联着PhysicalDeviceObject标识的显卡。可以把MiniportDeviceContext 中返回的句柄当成该显卡的句柄或者是关联着该显卡的context的句柄。DXGK(dxgkrnl.sys)在之后的调用中使用该句柄。下列几个例子列出了DXGK的几个不同组件调用KMD时的几个方法,其中都传入了该句柄。
- Port driver调用DxgkDdiStartDevice传入的MiniportDeviceContext句柄。
- VidPN管理器调用DxgkDdiIsSupportedVidPn传入的hAdapter句柄。
- DXG core 调用DxgkDdiQueryAdapterInfo传入的hAdapter句柄
这个handle有时叫MiniportDeviceContext有时叫hAdapter。不要将该handle与传入KMD的句柄hDevice 相混淆。
一些显卡拥有2到多个PCI function来作为这个显卡对象。例如一些老显卡用多个PCI function来实现多个显卡的view。显示端口驱动为每个PCI function调用DxgkDdiAddDevice来创建这些view。每次调用中KMD能指定是否支持该PCI function(支持则返回非NULL,反之为NULL)。通过传入PhysicalDeviceObject调用IoGetDeviceProperty能够得到指定PCI function的信息。
在DxgkDdiRemoveDeivce中释放这个context block和在DxgkDdiAddDevice 中创建的所有资源。
The DxgkDdiAddDevice function should be made pageable.
Requirements
Minimum supported client | Available in Windows Vista and later versions of the Windows operating systems. |
Target Platform | Desktop |
Header | dispmprt.h |
IRQL | PASSIVE_LEVEL |