Поделиться через


Метод ID3D11Fence::CreateSharedHandle (d3d11_3.h)

Создает общий дескриптор для объекта забора.

Этот метод эквивалентен методу Direct3D 12 ID3D12Device::CreateSharedHandle, и применяется в сценариях, связанных с взаимодействием между Direct3D 11 и Direct3D 12. В DirecX 11 можно открыть общий дескриптор ограждения с помощью метода ID3D11Device5::OpenSharedFence. В DirecX 12 можно открыть общий дескриптор ограждения с помощью метода ID3D12Device::OpenSharedHandle.

Синтаксис

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

Параметры

[in, optional] pAttributes

Тип: const SECURITY_ATTRIBUTES*

Указатель на структуру SECURITY_ATTRIBUTES, содержащую два отдельных, но связанных элемента данных: необязательный дескриптор безопасности и значение логического , определяющее, могут ли дочерние процессы наследовать возвращенный дескриптор.

Присвойте этому параметру значение NULL, если требуется, чтобы дочерние процессы, которые приложение может создать, чтобы не наследовать дескриптор безопасности, возвращенный CreateSharedHandle, и если требуется, чтобы ресурс, связанный с возвращаемым дескриптором безопасности по умолчанию.

Элемент lpSecurityDescriptor структуры указывает SECURITY_DESCRIPTOR для ресурса. Задайте этому члену значение NULL, если требуется, чтобы среда выполнения назначила дескриптор безопасности по умолчанию ресурсу, связанному с возвращаемым дескриптором. Списки управления доступом в дескрипторе безопасности по умолчанию для ресурса получены из первичного или олицетворения маркера создателя. Дополнительные сведения см. в разделе Безопасность объектов синхронизации иправ доступа.

dwAccess

Тип: DWORD

В настоящее время единственным значением, которое принимает этот параметр, является GENERIC_ALL.

[in, optional] lpName

Тип: LPCWSTR

Строка NULL, завершаемаяЮНИКОДе, которая содержит имя для связывания с общей кучей. Имя ограничено MAX_PATH символами. Сравнение имен учитывает регистр.

Если имя соответствует имени существующего ресурса, CreateSharedHandle завершается ошибкой с DXGI_ERROR_NAME_ALREADY_EXISTS. Это происходит, так как эти объекты используют одно и то же пространство имен.

Имя может иметь префикс "Глобальный" или "Локальный", чтобы явно создать объект в глобальном или пространстве имен сеанса. Оставшаяся часть имени может содержать любой символ, кроме символа обратной косой черты (\). Дополнительные сведения см. в разделе пространства имен объектов ядра. Быстрое переключение пользователей реализуется с помощью сеансов служб терминалов. Имена объектов ядра должны соответствовать рекомендациям, описанным для служб терминалов, чтобы приложения могли поддерживать несколько пользователей.

Объект можно создать в частном пространстве имен. Дополнительные сведения см. в пространствах имен объектов.

[out] pHandle

Тип: HANDLE*

Указатель на переменную, которая получает значение NT HANDLE для общего ресурса. Этот дескриптор можно использовать в вызовах для доступа к ресурсу.

Возвращаемое значение

Тип: HRESULT

Возвращает S_OK в случае успешного выполнения; в противном случае возвращает одно из следующих значений:

  • DXGI_ERROR_INVALID_CALL, если один из параметров недопустим.
  • DXGI_ERROR_NAME_ALREADY_EXISTS, если указанное имя ресурса для общего доступа уже связано с другим ресурсом.
  • E_ACCESSDENIED, если объект создается в защищенном пространстве имен.
  • E_OUTOFMEMORY, если недостаточно памяти для создания дескриптора.
  • Возможно, другие коды ошибок, описанные в разделе Коды возврата Direct3D 11.

Замечания

Чтобы создать общий дескриптор для указанного забора, необходимо создать забор с флагами D3D11_FENCE_FLAG_SHARED или D3D11_FENCE_FLAG_SHARED_CROSS_ADAPTER. Дополнительные сведения см. в перечислении D3D11_FENCE_FLAG.

Требования

Требование Ценность
целевая платформа Виндоус
заголовка d3d11_3.h
библиотеки D3D11.lib
DLL D3D11.dll

См. также

ID3D11Fence