D3DDDI_ALLOCATIONINFO2 结构 (d3dukmdt.h)

D3DDDI_ALLOCATIONINFO2 结构描述分配。

语法

typedef struct _D3DDDI_ALLOCATIONINFO2 {
  D3DKMT_HANDLE                         hAllocation;
  union {
    HANDLE     hSection;
    const VOID *pSystemMem;
  } D3DKMT_ALIGN64;
  void                                  D3DKMT_PTR(
    VOID               *unnamedParam1,
    pPrivateDriverData unnamedParam2
  );
  UINT                                  PrivateDriverDataSize;
  D3DDDI_VIDEO_PRESENT_SOURCE_ID        VidPnSourceId;
  union {
    struct {
      UINT Primary : 1;
      UINT Stereo : 1;
      UINT OverridePriority : 1;
#if ...
      UINT Reserved : 29;
#elif
      UINT Reserved : 30;
#else
      UINT Reserved : 31;
#endif
    };
    UINT Value;
  } Flags;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
  union {
    UINT                     Priority;
    D3DKMT_ALIGN64 ULONG_PTR Unused;
  };
#if ...
  D3DKMT_ALIGN64 ULONG_PTR              Reserved[5];
#else
  D3DKMT_ALIGN64 ULONG_PTR              Reserved[6];
#endif
} D3DDDI_ALLOCATIONINFO2;

成员

hAllocation

[out]表示分配的内核模式句柄 的D3DKMT_HANDLE 句柄。 如果非 NULL) Direct3D 运行时的 pfnAllocateCb 函数在 (D3DDDICB_ALLOCATE 结构的 hKMResource 成员中返回,则此句柄与内核模式资源 句柄相关联 。 用户模式显示驱动程序可以使用此内核模式分配句柄来引用命令缓冲区中的分配。

D3DKMT_ALIGN64

hSectionpSystemMem 联合。

D3DKMT_ALIGN64.hSection

[in]有效节对象的句柄。 设置 D3DKMT_CREATEALLOCATIONFLAGS::ExistingSection 时使用 hSection

D3DKMT_ALIGN64.pSystemMem

[in]指向预分配的系统内存的指针。 如果未设置 D3DKMT_CREATEALLOCATIONFLAGS::ExistingSection,请使用 pSystemMem

void D3DKMT_PTR( VOID *unnamedParam1, pPrivateDriverData unnamedParam2)

PrivateDriverDataSize

[in]专用数据的大小(以字节为单位)。

VidPnSourceId

[in]如果分配用于主图面,则视频呈现网络路径中视频呈现源的从零开始的 VidPN 标识号 (VidPN) 拓扑。 驱动程序应仅为主要分配类型设置 VidPnSourceId,而不应为任何其他分配类型设置 VidPnSourceId 。 如果驱动程序在调用 pfnAllocateCb 函数时为任何其他分配类型设置 VidPnSourceId则 pfnAllocateCb 返回D3DDDI_ID_NOTAPPLICABLE。

当 DirectX 图形内核子系统启动为共享主图面创建分配时,显示微型端口驱动程序可以从 DXGK_ALLOCATIONINFO 结构的 pPrivateDriverData 成员指向的 D3DKMDDI_SHAREDPRIMARYSURFACEDATA 结构的 VidPnSourceId 成员中确定标识号。

Flags

[in]包含结构或 32 位值的联合,该值标识分配的类型。

Flags.Primary

[in]一个 UINT,指定分配是否为桌面的一部分。 CPU 可隐式访问此类分配。 主分配可以在创建时固定,也可以在创建时不固定。

设置此成员等效于设置 32 位 Value 成员 (0x00000001) 的第一位。

Flags.Stereo

[in]从 Windows 8 (WDDM 1.2) 开始受支持。 一个 UINT,指定分配是否为立体声主分配。 仅当设置了 Primary 成员时,才能设置 Stereo 成员。

设置此成员等效于设置 32 位 Value 成员 (0x00000002) 的第二位。

Flags.OverridePriority

[in]从 Windows 10 版本 1703 (WDDM 2.2) 开始受支持。 替代用户模式图形驱动程序建立的优先级。

Flags.Reserved

[in]此成员是保留成员,应设置为零。

Flags.Value

[in]标识分配类型的 32 位值。

GpuVirtualAddress

[out]创建的分配的 GPU 虚拟地址。

Priority

[in]分配的优先级。

Unused

未使用。

Reserved[5]

Reserved[6]

注解

当用户模式显示驱动程序在 D3DDDI_ALLOCATIONINFO 的 Flags 成员中设置 Primary 位字段标志时,对于调用显示微型端口驱动程序的 DxgkDdiCreateAllocation 函数的分配,DXGKARG_CREATEALLOCATION 结构的 pAllocationInfo 成员中的DXGK_ALLOCATIONINFO结构适用某些限制。 包含如下这些限制:

  • 分配根据偏好进行分配;否则,分配默认为支持的写入段集,并且写入段集中的所有指定段都必须是 CPU 可访问的。

  • 显示微型端口驱动程序无法在 DXGK_ALLOCATIONINFO 的 Flags 成员中设置以下位字段 标志

  • PermanentSysMem

  • Cached(缓存的请求)

  • Protected

  • ExistingSysMem

  • ExistingKernelSysMem

D3DDDI_ID_NOTAPPLICABLE常量在 D3dukmdt.h 中定义。

要求

要求
最低受支持的客户端 Windows 7
标头 d3dukmdt.h

另请参阅

CreateResource

D3DDDICB_ALLOCATE

D3DDDI_SURFACEINFO

D3DKMDDI_SHAREDPRIMARYSURFACEDATA

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DxgkDdiCreateAllocation

pfnAllocateCb