Функция D3DKMTShareObjects (d3dkmthk.h)

D3DKMTShareObjects использует объекты ресурсов, созданные с помощью функций D3KMDTCreateAllocation, D3KMDTCreateAllocation2D3DKMTCreateKeyedMutex2 и D3DKMTCreateSynchronizationObject2 .

Синтаксис

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

Параметры

[in] cObjects

Количество объектов ресурсов, указанных в параметре hObjects . Это значение должно быть меньше или равно D3DKMT_MAX_OBJECTS_PER_HANDLE.

[in] hObjects

Указатель на массив локальных дескрипторов режима ядра, указывающих объекты ресурсов, к которым будет предоставлен общий доступ. Дополнительные сведения см. в разделе Примечания.

[in] pObjectAttributes

Указатель на структуру OBJECT_ATTRIBUTES , указывающую атрибуты объектов ресурса.

[in] dwDesiredAccess

Указывает доступ на чтение и запись для ресурса.

Для объектов синхронизации GPU dwDesiredAccess может быть сочетанием следующих битовых полей (определенных в d3dukmdt.h).

Значение Значение
STANDARD_RIGHTS_READ Процесс, открывающий объект синхронизации, может считывать состояние объекта синхронизации. Этот флаг необходимо указать, иначе объект будет недоступен.
D3DDDI_SYNC_OBJECT_WAIT Процесс, открывающий объект синхронизации, может выполнять операции ожидания для объекта синхронизации.
D3DDDI_SYNC_OBJECT_SIGNAL Процесс, открывающий объект синхронизации, может выдавать операции сигнала для объекта синхронизации.
D3DDDI_SYNC_OBJECT_ALL_ACCESS Процесс, открывающий объект синхронизации, может выполнить любую операцию для объекта синхронизации.

Для общих ресурсов требуемый доступ можно указать в сочетании следующих флагов (определенных в d3dkmthk.h):

Значение Значение
STANDARD_RIGHTS_READ Процесс, открывающий ресурс, может иметь доступ на чтение. Этот флаг необходимо указать, иначе объект будет недоступен.
SHARED_ALLOCATION_WRITE Процесс, открывающий ресурс, может иметь доступ на запись. Если этот флаг доступа не указан, ресурс будет открыт только для чтения.
SHARED_ALLOCATION_ALL_ACCESS Процесс, открывающий ресурс, может иметь весь доступ к объекту .

[out] phSharedNtHandle

Указатель на общий дескриптор NT, указывающий объекты ресурса.

Этот параметр будет иметь значение NULL , если значение флага NtSecuritySharing не задано. Дополнительные сведения см. в разделе Примечания.

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

Метод возвращает STATUS_SUCCESS , если операция выполнена успешно. В противном случае этот метод может вернуть соответствующий код ошибки NTSTATUS .

Комментарии

Объекты для общего доступа с помощью D3DKMTShareObjects необходимо сначала создать с установленным значением флага NtSecuritySharing . Это значение флага доступно в структурах D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS и D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .

Эта функция должна указывать дескрипторы с помощью параметра hObjects только для следующих комбинаций типов входных типов массивов объектов:

  • выделение
  • выделение, мьютекс с ключом и объект синхронизации
  • объект синхронизации

Операционная система отклоняет любые другие сочетания входных дескрипторов.

Требования

Требование Значение
Минимальная версия клиента Windows 8
Минимальная версия сервера Windows Server 2012
Целевая платформа Универсальное
Верхняя часть d3dkmthk.h (включая D3dkmthk.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTCreateAllocation

D3DKMTCreateAllocation2

D3DKMTCreateKeyedMutex2

D3DKMTCreateSynchronizationObject2

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS