Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die D3DKMTGetSharedPrimaryHandle Funktion ruft den globalen gemeinsam genutzten Handle für die primäre Oberfläche ab.
Syntax
NTSTATUS D3DKMTGetSharedPrimaryHandle(
D3DKMT_GETSHAREDPRIMARYHANDLE *unnamedParam1
);
Parameter
unnamedParam1
pData- [in, out]
Ein Zeiger auf eine D3DKMT_GETSHAREDPRIMARYHANDLE-Struktur, die die Parameter beschreibt, die zum Abrufen des freigegebenen Handles erforderlich sind.
Rückgabewert
D3DKMTGetSharedPrimaryHandle gibt einen der folgenden Werte zurück:
| Rückgabecode | Beschreibung |
|---|---|
| STATUS_SUCCESS | Das Handle wurde erfolgreich abgerufen. |
| STATUS_DEVICE_REMOVED | Der Grafikkarte wurde beendet, oder das Anzeigegerät wurde zurückgesetzt. |
| STATUS_INVALID_PARAMETER | Parameter wurden überprüft und ermittelt, dass sie falsch sind. |
Diese Funktion kann auch andere NTSTATUS-Werte zurückgeben.
Bemerkungen
Die primäre Oberfläche wird in der Regel vom Microsoft DirectX-Grafik-Kernelsubsystem (Dxgkrnl.sys) bei jeder Änderung des Anzeigemodus erstellt (obwohl in einigen Situationen die freigegebene Primäre möglicherweise nicht vorhanden ist). Wenn eine OpenGL-Anwendung versucht, eine primäre Oberfläche zu erstellen, muss sie in der Regel die vorhandene freigegebene Primäre öffnen. Zum Öffnen der freigegebenen primären Anwendung muss die OpenGL-Anwendung D3DKMTGetSharedPrimaryHandle- verwenden, um den globalen gemeinsam genutzten Handle für die primäre Oberfläche abzurufen.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie ein OpenGL ICD D3DKMTGetSharedPrimaryHandle- verwenden kann, um eine primäre Oberfläche zu erstellen, indem der freigegebene Handle geöffnet wird.
HRESULT OpenSharedPrimarySurface(D3DKMT_HANDLE hAdapter,
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId,
D3DKMT_HANDLE hDevice,
VOID* pPrivateDriverData,
UINT PrivateDriverDataSize,
D3DKMT_HANDLE* phResource,
D3DKMT_HANDLE* phAllocation)
{
D3DKMT_CREATEALLOCATION CreateAllocation;
D3DDDI_ALLOCATIONINFO AllocationInfo;
D3DKMT_GETSHAREDPRIMARYHANDLE GetHandleData;
*phResource = 0;
*phAllocation = 0;
// Get the shared handle.
GetHandleData.hAdapter = hAdapter;
GetHandleData.VidPnSourceId = VidPnSourceId;
if (!NT_SUCCESS((*pfnKTGetSharedPrimaryHandle)(&GetHandleData))) {
return E_FAIL;
}
// Was a shared primary created by the kernel?
if (GetHandleData.hSharedPrimary == NULL) {
return E_FAIL;
}
CreateAllocation.hDevice = hDevice;
CreateAllocation.hResource = NULL;
CreateAllocation.hGlobalShare = GetHandleData.hSharedPrimary;
CreateAllocation.Flags.CreateResource =
CreateAllocation.Flags.CreateShared = TRUE;
CreateAllocation.pPrivateRuntimeData = NULL;
CreateAllocation.PrivateRuntimeDataSize = 0;
CreateAllocation.pPrivateDriverData = NULL;
CreateAllocation.PrivateDriverDataSize = 0;
CreateAllocation.NumAllocations = 1;
CreateAllocation.pAllocationInfo = &AllocationInfo;
AllocationInfo.hAllocation = NULL;
AllocationInfo.pSystemMem = NULL;
AllocationInfo.pPrivateDriverData = pPrivateData;
AllocationInfo.PrivateDriverDataSize = PrivateDataSize;
if (NT_SUCCESS((*pfnKTCreateAllocation)(&CreateAllocation))) {
*phResource = CreateAllocation.hResource;
*phAllocation = AllocationInfo.hAllocation;
return S_OK;
}
return E_FAIL;
}
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Windows Vista |
| Zielplattform- | Universal |
| Header- | d3dkmthk.h (einschließlich D3dkmthk.h) |
| Library | Gdi32.lib |
| DLL- | Gdi32.dll |