Функция 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