ID3D12Device::CreateSharedHandle-Methode (d3d12.h)
Erstellt ein freigegebenes Handle für ein Heap-, Ressourcen- oder Zaunobjekt.
Syntax
HRESULT CreateSharedHandle(
[in] ID3D12DeviceChild *pObject,
[in, optional] const SECURITY_ATTRIBUTES *pAttributes,
DWORD Access,
[in, optional] LPCWSTR Name,
[out] HANDLE *pHandle
);
Parameter
[in] pObject
Typ: ID3D12DeviceChild*
Ein Zeiger auf die ID3D12DeviceChild Schnittstelle, die das Heap-, Ressourcen- oder Zaunobjekt darstellt, das für die Freigabe erstellt werden soll. Die folgenden Schnittstellen (abgeleitet von ID3D12DeviceChild) werden unterstützt:
[in, optional] pAttributes
Typ: SECURITY_ATTRIBUTES*
Ein Zeiger auf eine SECURITY_ATTRIBUTES-Struktur, die zwei separate, aber verwandte Datenmember enthält: einen optionalen Sicherheitsdeskriptor und einen booleschen Wert, der bestimmt, ob untergeordnete Prozesse das zurückgegebene Handle erben können.
Legen Sie diesen Parameter auf NULL- fest, wenn untergeordnete Prozesse, die von der Anwendung erstellt werden, möglicherweise nicht erben sollen, das von CreateSharedHandlezurückgegebene Handle zurückgegeben wird, und wenn Sie möchten, dass die Ressource, die dem zurückgegebenen Handle zugeordnet ist, einen Standardsicherheitsdeskriptor abrufen soll.
Der lpSecurityDescriptor Element der Struktur gibt einen SECURITY_DESCRIPTOR für die Ressource an. Legen Sie dieses Element auf NULL- fest, wenn die Laufzeit der Ressource, die dem zurückgegebenen Handle zugeordnet ist, einen Standardsicherheitsdeskriptor zuweisen soll. Die ACLs im Standardsicherheitsdeskriptor für die Ressource stammen aus dem primären oder Identitätswechseltoken des Erstellers. Weitere Informationen finden Sie unter Sync Object Security and Access Rights.
Access
Typ: DWORD-
Derzeit ist der einzige Wert, den dieser Parameter akzeptiert, GENERIC_ALL.
[in, optional] Name
Typ: LPCWSTR-
Eine NULL--terminated UNICODE- Zeichenfolge, die den Namen enthält, der dem freigegebenen Heap zugeordnet werden soll. Der Name ist auf MAX_PATH Zeichen beschränkt. Bei dem Namensvergleich wird die Groß-/Kleinschreibung beachtet.
Wenn Name mit dem Namen einer vorhandenen Ressource übereinstimmt, schlägt CreateSharedHandle- mit DXGI_ERROR_NAME_ALREADY_EXISTSfehl. Dies geschieht, da diese Objekte denselben Namespace gemeinsam nutzen.
Der Name kann ein Präfix "Global" oder "Local" aufweisen, um das Objekt explizit im globalen oder Sitzungsnamespace zu erstellen. Der Rest des Namens kann ein beliebiges Zeichen mit Ausnahme des umgekehrten Schrägstrichs (\) enthalten. Weitere Informationen finden Sie unter Kernel Object Namespaces. Schnelle Benutzerumschaltung wird mithilfe von Terminaldienstesitzungen implementiert. Kernelobjektnamen müssen den Richtlinien für Terminaldienste entsprechen, damit Anwendungen mehrere Benutzer unterstützen können.
Das Objekt kann in einem privaten Namespace erstellt werden. Weitere Informationen finden Sie unter Object Namespaces.
[out] pHandle
Typ: HANDLE*
Ein Zeiger auf eine Variable, die den NT HANDLE-Wert an die freizugebende Ressource empfängt. Sie können dieses Handle in Aufrufen verwenden, um auf die Ressource zuzugreifen.
Rückgabewert
Typ: HRESULT-
Gibt S_OK zurück, wenn dies erfolgreich ist; andernfalls gibt einen der folgenden Werte zurück:
- DXGI_ERROR_INVALID_CALL, wenn einer der Parameter ungültig ist.
- DXGI_ERROR_NAME_ALREADY_EXISTS, wenn der angegebene Name der zu teilenden Ressource bereits einer anderen Ressource zugeordnet ist.
- E_ACCESSDENIED, wenn das Objekt in einem geschützten Namespace erstellt wird.
- E_OUTOFMEMORY, wenn genügend Arbeitsspeicher zum Erstellen des Handles nicht verfügbar ist.
- Möglicherweise andere Fehlercodes, die im Thema Direct3D 12-Rückgabecodes beschrieben werden.
Bemerkungen
Sowohl Heaps als auch zugesicherte Ressourcen können freigegeben werden. Das Freigeben einer zugesicherten Ressource teilt den impliziten Heap zusammen mit der Beschreibung der zugesicherten Ressource, sodass eine kompatible Ressourcenbeschreibung dem Heap von einem anderen Gerät zugeordnet werden kann.
Für Direct3D 11- und Direct3D 12-Interoperabilitätsszenarien wird in DirectX 11 ein gemeinsamer Zaun mit der ID3D11Device5::OpenSharedFence-Methode geöffnet, und eine freigegebene Ressource wird mit der ID3D11Device::OpenSharedResource1-Methode geöffnet.
Für Direct3D 12 wird ein freigegebenes Handle mit der ID3D12Device::OpenSharedHandle oder der ID3D12Device::OpenSharedHandleByName-Methode geöffnet.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Fenster |
Header- | d3d12.h |
Library | D3D12.lib |
DLL- | D3D12.dll |