Share via


ID3D11Fence::CreateSharedHandle-Methode (d3d11_3.h)

Erstellt ein freigegebenes Handle für ein Zaunobjekt.

Diese Methode entspricht der Direct3D 12 ID3D12Device::CreateSharedHandle-Methode und wird in Szenarien angewendet, die eine Interoperation zwischen Direct3D 11 und Direct3D 12 umfassen. In DirecX 11 können Sie das freigegebene Zaunhandle mit der ID3D11Device5::OpenSharedFence-Methode öffnen. In DirecX 12 können Sie das Handle für den freigegebenen Zaun mit der ID3D12Device::OpenSharedHandle-Methode öffnen.

Syntax

HRESULT CreateSharedHandle(
  [in, optional] const SECURITY_ATTRIBUTES *pAttributes,
                 DWORD                     dwAccess,
  [in, optional] LPCWSTR                   lpName,
  [out]          HANDLE                    *pHandle
);

Parameter

[in, optional] pAttributes

Typ: const 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 die Anwendung möglicherweise erstellt, das von CreateSharedHandle zurückgegebene Handle nicht erben sollen, und wenn die Ressource, die dem zurückgegebenen Handle zugeordnet ist, einen Standardsicherheitsdeskriptor erhalten soll.

Der lpSecurityDescriptor-Member der -Struktur gibt einen SECURITY_DESCRIPTOR für die Ressource an. Legen Sie diesen Member auf NULL fest, wenn die Runtime 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 Token oder dem Identitätswechseltoken des Erstellers. Weitere Informationen finden Sie unter Sicherheit und Zugriffsrechte für Synchronisierungsobjekte.

dwAccess

Typ: DWORD

Der einzige Wert, den dieser Parameter akzeptiert, ist derzeit GENERIC_ALL.

[in, optional] lpName

Typ: LPCWSTR

Eine MIT NULL beendete UNICODE-Zeichenfolge , die den Namen enthält, der dem freigegebenen Heap zugeordnet werden soll. Der Name ist auf MAX_PATH Zeichen beschränkt. Beim Namenvergleich wird die Groß-/Kleinschreibung beachtet.

Wenn Name mit dem Namen einer vorhandenen Ressource übereinstimmt, schlägt CreateSharedHandle mit DXGI_ERROR_NAME_ALREADY_EXISTS fehl. Dies liegt daran, dass diese Objekte denselben Namespace verwenden.

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 Kernelobjektnamespaces. Der schnelle Benutzerwechsel 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 Objektnamespaces.

[out] pHandle

Typ: HANDLE*

Ein Zeiger auf eine Variable, die den NT HANDLE-Wert für die ressource empfängt, die freigegeben werden soll. Sie können dieses Handle in Aufrufen für den Zugriff auf die Ressource verwenden.

Rückgabewert

Typ: HRESULT

Gibt bei erfolgreicher Ausführung S_OK zurück. Gibt andernfalls 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 ressource, die freigegeben werden soll, bereits einer anderen Ressource zugeordnet ist.
  • E_ACCESSDENIED, wenn das Objekt in einem geschützten Namespace erstellt wird.
  • E_OUTOFMEMORY, wenn nicht genügend Arbeitsspeicher zum Erstellen des Handles verfügbar ist.
  • Möglicherweise weitere Fehlercodes, die im Thema Direct3D 11-Rückgabecodes beschrieben werden.

Hinweise

Um ein freigegebenes Handle für den angegebenen Zaun zu erstellen, muss der Zaun entweder mit dem D3D11_FENCE_FLAG_SHARED - oder D3D11_FENCE_FLAG_SHARED_CROSS_ADAPTER-Flags erstellt worden sein. Weitere Informationen finden Sie in der D3D11_FENCE_FLAG-Enumeration .

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d11_3.h
Bibliothek D3D11.lib
DLL D3D11.dll

Weitere Informationen

ID3D11Fence