D3DKMTShareObjects-Funktion (d3dkmthk.h)

D3DKMTShareObjects gibt Ressourcenobjekte frei, die mit den Funktionen D3KMDTCreateAllocation, D3KMDTCreateAllocation2D3DKMTCreateKeyedMutex2 und D3DKMTCreateSynchronizationObject2 erstellt wurden.

Syntax

NTSTATUS D3DKMTShareObjects(
  [in]  UINT                cObjects,
  [in]  const D3DKMT_HANDLE *hObjects,
  [in]  POBJECT_ATTRIBUTES  pObjectAttributes,
  [in]  DWORD               dwDesiredAccess,
  [out] HANDLE              *phSharedNtHandle
);

Parameter

[in] cObjects

Die Anzahl der Ressourcenobjekte, die im hObjects-Parameter bereitgestellt werden. Dieser Wert muss kleiner oder gleich D3DKMT_MAX_OBJECTS_PER_HANDLE sein.

[in] hObjects

Ein Zeiger auf ein Array von lokalen Kernelmodushandles, die die ressourcenbezogenen Objekte angeben, die freigegeben werden sollen. Weitere Informationen finden Sie unter Hinweise.

[in] pObjectAttributes

Ein Zeiger auf eine OBJECT_ATTRIBUTES Struktur, die Attribute der Ressourcenobjekte angibt.

[in] dwDesiredAccess

Gibt den Lese- und Schreibzugriff für die Ressource an.

Für GPU-Synchronisierungsobjekte kann dwDesiredAccess eine Kombination der folgenden Bitfelder sein (definiert in d3dukmdt.h).

Wert Bedeutung
STANDARD_RIGHTS_READ Der Prozess, der das Synchronisierungsobjekt öffnet, kann den Zustand des Synchronisierungsobjekts lesen. Dieses Flag muss angegeben werden, sonst kann nicht auf das Objekt zugegriffen werden.
D3DDDI_SYNC_OBJECT_WAIT Der Prozess, der das Synchronisierungsobjekt öffnet, kann Wartevorgänge für das Synchronisierungsobjekt ausführen.
D3DDDI_SYNC_OBJECT_SIGNAL Der Prozess, der das Synchronisierungsobjekt öffnet, kann Signalvorgänge für das Synchronisierungsobjekt ausgeben.
D3DDDI_SYNC_OBJECT_ALL_ACCESS Der Prozess, der das Synchronisierungsobjekt öffnet, kann jeden Vorgang für das Synchronisierungsobjekt ausführen.

Für freigegebene Ressourcen kann der gewünschte Zugriff als Kombination der folgenden Flags (definiert in d3dkmthk.h) angegeben werden:

Wert Bedeutung
STANDARD_RIGHTS_READ Der Prozess, der die Ressource öffnet, kann Lesezugriff haben. Dieses Flag muss angegeben werden, sonst kann nicht auf das Objekt zugegriffen werden.
SHARED_ALLOCATION_WRITE Der Prozess, der die Ressource öffnet, kann Schreibzugriff haben. Wenn dieses Zugriffsflag nicht angegeben wird, wird die Ressource als schreibgeschützt geöffnet.
SHARED_ALLOCATION_ALL_ACCESS Der Prozess, der die Ressource öffnet, kann den gesamten Zugriff auf das Objekt haben.

[out] phSharedNtHandle

Ein Zeiger auf ein freigegebenes NT-Handle, das die Ressourcenobjekte angibt.

Dieser Parameter ist NULL , wenn der NtSecuritySharing-Flagwert nicht festgelegt ist. Weitere Informationen finden Sie unter Hinweise.

Rückgabewert

Die Methode gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen entsprechenden NTSTATUS-Fehlercode zurück.

Hinweise

Objekte, die mithilfe von D3DKMTShareObjects freigegeben werden sollen, müssen zuerst mit dem NtSecuritySharing-Flagwert erstellt werden. Dieser Flagwert ist in den Strukturen D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS und D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS verfügbar.

Diese Funktion darf Handles über den hObjects-Parameter nur für die folgenden Kombinationen von Eingabeobjektarraytypen angeben:

  • eine Zuordnung
  • eine Zuordnung, ein Schlüsselmutex und ein Synchronisierungsobjekt
  • ein Synchronisierungsobjekt

Das Betriebssystem lehnt alle anderen Eingabehandle-Kombinationen ab.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Universell
Header d3dkmthk.h (einschließlich D3dkmthk.h)
Bibliothek Gdi32.lib
DLL Gdi32.dll

Weitere Informationen

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTCreateAllocation

D3DKMTCreateAllocation2

D3DKMTCreateKeyedMutex2

D3DKMTCreateSynchronizationObject2

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS