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


структура D3DKMT_CREATEALLOCATION (d3dkmthk.h)

Структура D3DKMT_CREATEALLOCATION описывает параметры созданиивыделения.

Синтаксис

typedef struct _D3DKMT_CREATEALLOCATION {
  [in]     D3DKMT_HANDLE                hDevice;
  [in/out] D3DKMT_HANDLE                hResource;
  [out]    D3DKMT_HANDLE                hGlobalShare;
  [in]     const VOID                   *pPrivateRuntimeData;
  [in]     UINT                         PrivateRuntimeDataSize;
  union {
    [in]     D3DKMT_CREATESTANDARDALLOCATION *pStandardAllocation;
    [in]     const VOID                      *pPrivateDriverData;
  };
  [in/out] UINT                         PrivateDriverDataSize;
  [in]     UINT                         NumAllocations;
  union {
    [in]     D3DDDI_ALLOCATIONINFO  *pAllocationInfo;
    [in]     D3DDDI_ALLOCATIONINFO2 *pAllocationInfo2;
  };
  [in]     D3DKMT_CREATEALLOCATIONFLAGS Flags;
  [in]     HANDLE                       hPrivateRuntimeResourceHandle;
} D3DKMT_CREATEALLOCATION;

Члены

[in] hDevice

Дескриптор устройства, с которым связан ресурс или выделение.

[in/out] hResource

Тип данных D3DKMT_HANDLE, представляющий дескриптор режима ядра для ресурса, связанного с выделениями. Значение в hResource всегда должно быть нулевым, если выделение не будет добавлено в существующий ресурс, в этом случае hResource содержит дескриптор ресурса.

Когда флаг CreateResource битовое поле задан в элементе Flags, среда выполнения OpenGL создает уникальный дескриптор и передает его драйверу. При выходе из функции D3DKMTCreateAllocationhResource указывает дескриптор, который драйвер должен использовать в последующих вызовах среды выполнения OpenGL для идентификации ресурса. Дескриптор ресурса, возвращаемый, зависит от устройства и действителен только при использовании с устройством, на который он был создан.

[out] hGlobalShare

Драйвер клиента в режиме пользователя не должен совместно использовать ресурсы с помощью глобальных дескрипторов. Драйвер должен задать NtSecuritySharing в Flags и вызвать D3DKMTShareObjects, чтобы получить дескриптор NT. Использование глобальных дескрипторов не является безопасным. Любой процесс может угадать глобальный дескриптор и открыть общий объект. Глобальные дескрипторы поддерживаются только по соображениям совместимости со старыми средами выполнения D3D. (Если NtSecuritySharing не задано, глобальный дескриптор возвращается в hGlobalShare. Ничего не позволяет UMD предоставлять общий доступ к ресурсу с помощью глобального дескриптора, но драйверы не должны делать это.)

[in] pPrivateRuntimeData

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

[in] PrivateRuntimeDataSize

Размер в байтах частных данных, на которые pPrivateRuntimeData.

[in] pStandardAllocation

Указатель на структуру D3DKMT_CREATESTANDARDALLOCATION, описывающую создание стандартного выделения.

[in] pPrivateDriverData

Указатель на буфер, содержащий необязательные частные данные, которые может потребоваться для создания ресурса или выделения драйвера мини-порта отображения. Содержимое буфера обычно исходит из ICD и должно быть в формате, который может обрабатывать драйвер минипорта отображения.

[in/out] PrivateDriverDataSize

Размер в байтах частных данных, на которые pPrivateDriverData указывает.

[in] NumAllocations

Число элементов в массиве, pAllocationInfo, которое представляет количество создаваемых выделений. Обратите внимание, что создание ресурса без первоначального выделения, связанного с ним, является допустимым; Таким образом, NumAllocations можно задать значение 0.

[in] pAllocationInfo

Массив структур D3DDDI_ALLOCATIONINFO, описывающих определенные свойства для каждого создаваемого выделения.

[in] pAllocationInfo2

Этот элемент зарезервирован и должен иметь значение нулю.

Этот член доступен начиная с Windows 7.

[in] Flags

Структура D3DKMT_CREATEALLOCATIONFLAGS, которая определяет атрибуты для создания выделения в флагах битового поля.

Если задать флаг CreateShared битовое поле в Flags, необходимо также задать флаг CreateResource битового поля.

[in] hPrivateRuntimeResourceHandle

Непрозрачный дескриптор, который можно использовать в трассировке событий. Этот дескриптор можно использовать для связывания выделений в режиме ядра с указателями на поверхности пользовательского режима при анализе журналов событий трассировки событий Windows (ETW).

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
заголовка d3dkmthk.h (include D3dkmthk.h)

См. также

D3DDDI_ALLOCATIONINFO

D3DKMTCreateAllocation

D3DKMT_CREATEALLOCATIONFLAGS