DXGKCB_GETHANDLEDATA回呼函式 (d3dkmddi.h)
DXGKCB_GETHANDLEDATA 擷取與配置相關聯的私人數據。
語法
DXGKCB_GETHANDLEDATA DxgkcbGethandledata;
VOID * DxgkcbGethandledata(
IN_CONST_PDXGKARGCB_GETHANDLEDATA unnamedParam1
)
{...}
參數
unnamedParam1
[in]描述要擷取之配置數據的 DXGKARGCB_GETHANDLEDATA 結構的指標。
傳回值
DXGKCB_GETHANDLEDATA 會傳回緩衝區,其中包含配置的私人數據。
如果DXGKCB_GETHANDLEDATA傳回 NULL 指標,DirectX 圖形核心子系統無法解析DXGKARGCB_GETHANDLEDATA結構之 hObject 成員中提供的句柄,原因如下:
- 因為惡意攻擊或其他錯誤,所以從使用者模式顯示驅動程式收到無效的句柄。
- 配置有存留期問題。
如果傳回 NULL 指標,顯示迷你埠驅動程式應該會失敗其目前執行的 DDI 函式,並STATUS_INVALID_HANDLE。
備註
當 DirectX 圖形核心子系統呼叫 display miniport 驅動程式的 DxgkDdiCreateAllocation 函式來建立配置句柄時,顯示迷你埠驅動程式可以為每個配置句柄建立私人數據。 顯示迷你埠驅動程式隨後可以呼叫 DXGKCB_GETHANDLEDATA 函式,以擷取每個圖形子系統特定句柄的私人數據。 因此,不需要顯示迷你埠驅動程序來維護私人配置句柄數據表。
如果在 pData 指向之 DXGKARGCB_GETHANDLEDATA 結構的 Flags 成員中設定 DeviceSpecific 位字段旗標,DXGKCB_GETHANDLEDATA會傳回與驅動程式從呼叫 DxgkDdiOpenAllocation 函式傳回之裝置特定句柄相關聯的裝置特定數據。 請注意,只有在顯示迷你埠驅動程式也會將 DXGKARGCB_GETHANDLEDATA 的 Type 成員設定為 DXGKARGCB_GETHANDLEDATA 之 hObject 成員中句柄的 DXGK_HANDLE_ALLOCATION 列舉值時,DeviceSpecific 位字段旗標才有效。
DXGKCB_XXX 函式是由 Dxgkrnl 實作。 若要使用此回呼函式,請設定 DXGKARGCB_GETHANDLEDATA 的成員,然後透過 DXGKRNL_INTERFACE呼叫 DxgkCbGetHandleData。
範例
下列程式代碼範例顯示呼叫DXGKCB_GETHANDLEDATA的 DxgkDdiOpenAllocation 實作。
NTSTATUS
DxgkDdiOpenAllocation(
VOID *InterfaceContext,
CONST DXGKARG_OPENALLOCATION *pDDIDAData)
{
DWORD dwIdx;
DXGKRNL_INTERFACE *pCallback;
PR2D3DDevice pR2D3DDev;
PHW_DEVICE_EXTENSION pAdapter;
pR2D3DDev = (PR2D3DDevice)InterfaceContext;
pAdapter = (PHW_DEVICE_EXTENSION)pR2D3DDev->pAdapter;
pCallback = &(pAdapter->ddiCallback);
for (dwIdx=0; dwIdx < pDDIDAData->NumAllocations; dwIdx++) {
DXGKARGCB_GETHANDLEDATA getHandleData = {0};
R2AllocationInfo* pAllocInfo;
getHandleData.hObject = pDDIDAData->pOpenAllocation[dwIdx].hAllocation;
getHandleData.Type = DXGK_HANDLE_ALLOCATION;
pAllocInfo = (PR2AllocationInfo)pCallback->DxgkCbGetHandleData(&getHandleData);
pDDIDAData->pOpenAllocation[dwIdx].hDeviceSpecificAllocation = (HANDLE)pAllocInfo;
pAllocInfo->vidMemData.hAllocation = pDDIDAData->pOpenAllocation[dwIdx].hAllocation;
}
return STATUS_SUCCESS;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista (WDDM 1.0) |
目標平台 | 桌面 |
標頭 | d3dkmddi.h (包含 D3dkmddi.h) |
IRQL | < DISPATCH_LEVEL |