DXGKCB_GETHANDLEDATA Rückruffunktion (d3dkmddi.h)
DXGKCB_GETHANDLEDATA ruft die privaten Daten ab, die einer Zuordnung zugeordnet sind.
Syntax
DXGKCB_GETHANDLEDATA DxgkcbGethandledata;
VOID * DxgkcbGethandledata(
IN_CONST_PDXGKARGCB_GETHANDLEDATA unnamedParam1
)
{...}
Parameter
unnamedParam1
[in] Ein Zeiger auf eine DXGKARGCB_GETHANDLEDATA Struktur, die die abzurufenden Zuordnungsdaten beschreibt.
Rückgabewert
DXGKCB_GETHANDLEDATA gibt einen Puffer zurück, der die privaten Daten für die Zuordnung enthält.
Wenn DXGKCB_GETHANDLEDATA einen NULL-Zeiger zurückgibt, konnte das DirectX-Grafik-Kernelsubsystem das Handle, das im hObject Member der DXGKARGCB_GETHANDLEDATA-Struktur bereitgestellt wird, aus einem Grund wie den folgenden Möglichkeiten nicht auflösen:
- Ein ungültiger Handle wurde aufgrund eines böswilligen Angriffs oder eines anderen Fehlers vom Anzeigetreiber des Benutzermodus empfangen.
- Zuordnungen hatten Lebenszyklusprobleme.
Wenn ein NULL-Zeiger zurückgegeben wird, sollte der Anzeigeminiporttreiber die derzeit ausgeführte DDI-Funktion mit STATUS_INVALID_HANDLE nicht ausführen.
Bemerkungen
Wenn das DirectX-Grafik-Kernelsubsystem die DxgkDdiCreateAllocation Funktion aufruft, um Handles für Zuordnungen zu erstellen, kann der Miniporttreiber private Daten für jeden Zuordnungshandle erstellen. Der Miniporttreiber kann anschließend die DXGKCB_GETHANDLEDATA-Funktion aufrufen, um private Daten für jedes grafiksubsystemspezifische Handle abzurufen. Daher ist der Anzeige-Miniporttreiber nicht erforderlich, um eine private Zuordnungshandle-Tabelle beizubehalten.
Wenn das DeviceSpecific- Bitfeld-Flag im Flags Element der DXGKARGCB_GETHANDLEDATA-Struktur festgelegt ist, auf die pData- verweist, gibt DXGKCB_GETHANDLEDATA die gerätespezifischen Daten zurück, die dem gerätespezifischen Handle zugeordnet sind, den der Treiber vom Aufruf an die DxgkDdiOpenAllocation-Funktion zurückgegeben hat. Beachten Sie, dass das DeviceSpecific- Bitfeld-Flag nur gültig ist, wenn der Anzeigeminiporttreiber auch den Type Member von DXGKARGCB_GETHANDLEDATA auf den DXGK_HANDLE_ALLOCATION Enumerationswert für den Handle im hObject Member von DXGKARGCB_GETHANDLEDATAfestlegt.
DXGKCB_XXX Funktionen werden von Dxgkrnlimplementiert. Um diese Rückruffunktion zu verwenden, legen Sie die Member von DXGKARGCB_GETHANDLEDATA fest, und rufen Sie dann DxgkCbGetHandleData über die DXGKRNL_INTERFACEauf.
Beispiel
Das folgende Codebeispiel zeigt eine Implementierung von DxgkDdiOpenAllocation-, in der DXGKCB_GETHANDLEDATA aufgerufen wird.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Vista (WDDM 1.0) |
Zielplattform- | Desktop |
Header- | d3dkmddi.h (einschließlich D3dkmddi.h) |
IRQL- | < DISPATCH_LEVEL |