Метод 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. Это происходит потому, что эти объекты используют одно и то же пространство имен.
Имя может иметь префикс "Global" или "Local" для явного создания объекта в глобальном пространстве имен или пространстве имен сеанса. Оставшаяся часть имени может содержать любой символ, кроме символа обратной косой черты (\). Дополнительные сведения см. в разделе Пространства имен объектов ядра. Быстрое переключение пользователей реализуется с помощью сеансов служб терминалов. Имена объектов ядра должны соответствовать рекомендациям, описанным для служб терминалов, чтобы приложения могли поддерживать нескольких пользователей.
Объект можно создать в частном пространстве имен. Дополнительные сведения см. в разделе Пространства имен объектов.
[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 .
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d11_3.h |
Библиотека | D3D11.lib |
DLL | D3D11.dll |