DXGKDDI_ADD_DEVICE DxgkddiAddDevice(MSDN翻译)

DXGKDDI_ADD_DEVICE 

DxgkDdiAddDevice 函数用于创建图形适配器的上下文,该函数返回的句柄代表了图形适配器。

Syntax

DXGKDDI_ADD_DEVICE DxgkddiAddDevice;

NTSTATUS DxgkddiAddDevice(
  IN_CONST_PDEVICE_OBJECT PhysicalDeviceObject,
  OUT_PPVOID MiniportDeviceContext
)
{...}

Parameters

IN_CONST_PDEVICE_OBJECT PhysicalDeviceObject

代表着图形适配器的物理设备对象(PDO)的指针。

OUT_PPVOID MiniportDeviceContext

这个输出指针变量用于接收KMD创建的代表着PDO标识的图形适配器的句柄。KMD可以返回NULL,表示KMD不支持PDO标识的图形适配器。

Return Value

如果成功DxgkDdiAddDevice返回STATUS_SUCCESS;否则返回Ntstatus.h中的一个错误码。

Remarks

DxgkDdiAddDevice 函数中,由KMD分配了关联PDO标识的图形适配器的私有上下文数据块。你可以将MiniportDeviceContext 参数返回的句柄看作是操作图形适配器的句柄或者是一个和图形适配器相关联的上下文数据块。DXGK(Dxgkrnl.sys)将在之后的一系列调用中提供这个句柄给KMD。一下列出几个例子展示了Dxgkrnl.sys的不同模块调用KMD实现的几个DDI函数,并将创建的这个句柄作为传输传递。

不要因为句柄有时取名叫MiniportDeviceContext 而有时叫hAdapter而迷惑。同样的道理也不要因为将句柄取名为hDevice作为传参到指定的显示小端口驱动中的方法而迷惑(PS: 句柄的名称可以叫MiniportDeviceContext,hAdapter,hDevice 其实都是在DxgkDdiAddDevice中创建的这个句柄)。

某些显示适配器卡拥有两个或多个扮演显示适配器的PCI功能。例如,某些旧卡通过给每个View使用独立的PCI功能来实现多个View。这种类型的显示端口驱动会为每一个PCI功能都调用一次DxgkDdiAddDevice函数,在每次调用中KMD能够指定是否支持该PCI功能(设置MiniportDeviceContext 不为空为支持,NULL为不支持)。KMD能够通过传参PhysicalDeviceObject 给 IoGetDeviceProperty函数来获取特定的PCI功能。

在 DxgkDdiRemoveDevice,需要释放所有在DxgkDdiAddDevice中所分配的资源和上下文数据块。

DxgkDdiAddDevice这个函数应该放在可分页内存中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值