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


структура DXGKARG_BUILDPAGINGBUFFER (d3dkmddi.h)

Структура DXGKARG_BUILDPAGINGBUFFER описывает параметры обратного вызова DxgkDdiBuildPagingBuffer , который создает буфер разбиения на страницы для использования в операции передачи памяти.

Синтаксис

typedef struct _DXGKARG_BUILDPAGINGBUFFER {
  VOID                             *pDmaBuffer;
  UINT                             DmaSize;
  VOID                             *pDmaBufferPrivateData;
  UINT                             DmaBufferPrivateDataSize;
  DXGK_BUILDPAGINGBUFFER_OPERATION Operation;
  UINT                             MultipassOffset;
  union {
    struct {
      HANDLE             hAllocation;
      UINT               TransferOffset;
      SIZE_T             TransferSize;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Source;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Destination;
      DXGK_TRANSFERFLAGS Flags;
      UINT               MdlOffset;
    } Transfer;
    struct {
      HANDLE hAllocation;
      SIZE_T FillSize;
      UINT   FillPattern;
      struct {
        UINT          SegmentId;
        LARGE_INTEGER SegmentAddress;
      } Destination;
    } Fill;
    struct {
      HANDLE                   hAllocation;
      DXGK_DISCARDCONTENTFLAGS Flags;
      UINT                     SegmentId;
      PHYSICAL_ADDRESS         SegmentAddress;
    } DiscardContent;
    struct {
      UINT             SegmentId;
      PHYSICAL_ADDRESS PhysicalAddress;
    } ReadPhysical;
    struct {
      UINT             SegmentId;
      PHYSICAL_ADDRESS PhysicalAddress;
    } WritePhysical;
    struct {
      HANDLE                hDevice;
      HANDLE                hAllocation;
      UINT                  SegmentId;
      SIZE_T                OffsetInPages;
      SIZE_T                NumberOfPages;
      PMDL                  pMdl;
      DXGK_MAPAPERTUREFLAGS Flags;
      ULONG                 MdlOffset;
    } MapApertureSegment;
    struct {
      HANDLE           hDevice;
      HANDLE           hAllocation;
      UINT             SegmentId;
      SIZE_T           OffsetInPages;
      SIZE_T           NumberOfPages;
      PHYSICAL_ADDRESS DummyPage;
    } UnmapApertureSegment;
    struct {
      HANDLE             hAllocation;
      UINT               TransferOffset;
      SIZE_T             TransferSize;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Source;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Destination;
      DXGK_TRANSFERFLAGS Flags;
      UINT               SwizzlingRangeId;
      UINT               SwizzlingRangeData;
    } SpecialLockTransfer;
    struct {
      HANDLE hAllocation;
      struct {
        UINT                   SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
        PVOID                  VirtualAddress;
        D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
      } Destination;
    } InitContextResource;
    DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL         TransferVirtual;
    DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL             FillVirtual;
    DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE         UpdatePageTable;
    DXGK_BUILDPAGINGBUFFER_FLUSHTLB                FlushTlb;
    DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES    CopyPageTableEntries;
    DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION UpdateContextAllocation;
    DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY         NotifyResidency;
    DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE    SignalMonitoredFence;
    struct {
      HANDLE                hDevice;
      HANDLE                hAllocation;
      UINT                  SegmentId;
      SIZE_T                OffsetInPages;
      SIZE_T                NumberOfPages;
      DXGK_ADL              Adl;
      DXGK_MAPAPERTUREFLAGS Flags;
      ULONG                 AdlOffset;
      PVOID                 CpuVisibleAddress;
    } MapApertureSegment2;
    DXGK_BUILDPAGINGBUFFER_NOTIFY_FENCE_RESIDENCY  NotifyFenceResidency;
    DXGK_BUILDPAGINGBUFFER_MAPMMU                  MmapMmu;
    DXGK_BUILDPAGINGBUFFER_UNMAPMMU                UnmapMmu;
    DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY2        NotifyResidency2;
    DXGK_BUILDPAGINGBUFFER_NOTIFYALLOC             NotifyAllocation;
    struct {
      UINT Reserved[64];
    } Reserved;
  };
  HANDLE                           hSystemContext;
  D3DGPU_VIRTUAL_ADDRESS           DmaBufferGpuVirtualAddress;
  UINT                             DmaBufferWriteOffset;
} DXGKARG_BUILDPAGINGBUFFER;

Members

pDmaBuffer

[in/out] Виртуальный адрес первого доступного байта в буфере разбиения по страницам. При первом вызове драйвера с новым буфером разбиения по страницам этот виртуальный адрес выравнивается на 4 КБ. Драйвер тесно упаковывает операции в буфере разбиения по страницам, пока буфер разбиения на страницах не будет заполнен, а затем использует новый буфер разбиения по страницам. Таким образом, если единица обработки графики (GPU) требует определенного выравнивания для отправки буфера на разбиении по страницам, драйвер должен применить это выравнивание, забив операции, которые он записывает в буфер разбиения по страницам. Прежде чем функция DxgkDdiBuildPagingBuffer возвращается, драйвер должен обновить pDmaBuffer до момента последнего байта, записываемого в буфер разбиения по страницам.

DmaSize

[in/out] Размер в байтах буфера разбиения на страницы, задающий pDmaBuffer .

pDmaBufferPrivateData

[in/out] Указатель на структуру частных данных драйвера, связанную с буфером прямого доступа к памяти (DMA), который указывает pDmaBuffer .

DmaBufferPrivateDataSize

[in/out] Количество байтов, оставшихся в структуре частных данных, на которые указывает pDmaBufferPrivateData для текущей операции.

Operation

[in] Значение типа DXGK_BUILDPAGINGBUFFER_OPERATION, указывающее тип операции памяти для выполнения.

MultipassOffset

[in/out] Значение UINT, указывающее ход выполнения операции разбиения по страницам, если требуются несколько буферов разбиения по страницам. Драйвер задает это значение, чтобы указать разделение на несколько буферов разбиения по страницам для нескольких операций передачи. Например, драйвер может хранить номер страницы, который последний раз был передан для передачи на основе страниц.

Transfer

[in] Структура, описывающая операцию передачи.

Transfer.hAllocation

[in] Дескриптор выделения, который функция dxgkDdiCreateAllocation драйвера ранее возвращалась в элементе hAllocation структуры DXGK_ALLOCATIONINFO, которая является частью элемента pAllocationInfo структуры DXGKARG_CREATEALLOCATION. Дескриптор выделения указывает на буфер, содержащий данные частного драйвера для передачи.

Transfer.TransferOffset

[in] Смещение (в байтах) первой страницы в выделении, которое передается. Это смещение применяется только к расположению сегмента. Это смещение не применяется к описанию MDL диапазона памяти. Если драйверу требуется несколько буферов разбиения по страницам для завершения передачи (то есть драйвер возвращает STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER из функции DxgkDdiBuildPagingBuffer ), TransferOffset одинаково для каждого вызова DxgkDdiBuildPagingBuffer для этой передачи.

Transfer.TransferSize

[in] Размер в байтах данных памяти для передачи.

Transfer.Source

[in] Структура, описывающая выделение источника. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент исходного выделения (SegmentAddress) или указатель на MDL для источника (pMdl).

Transfer.Source.SegmentId

[in] Идентификатор сегмента в исходном выделении или ноль, если выделение источника описывается членом pMdl объединения, который содержит источник .

Transfer.Source.SegmentAddress

[in] Адрес исходного сегмента, если член SegmentIdисточника является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr

Transfer.Source.pMdl

[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти источника, если элемент SegmentIdисточника равен нулю.

Transfer.Destination

[in] Структура, описывающая выделение назначения. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент целевого выделения (SegmentAddress) или указатель на MDL для назначения (pMdl).

Transfer.Destination.SegmentId

[in] Идентификатор сегмента в целевом выделении или ноль, если целевое выделение описывается членом pMdl объединения, который содержит назначение .

Transfer.Destination.SegmentAddress

[in] Адрес сегмента назначения, если член SegmentIdназначения является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr

Transfer.Destination.pMdl

[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти для назначения, если элемент SegmentIdназначения равен нулю.

Transfer.Flags

[in] Структура DXGK_TRANSFERFLAGS , идентифицирующая флаги битового поля, тип операции специальной блокировки для выполнения.

Transfer.MdlOffset

[in] Смещение в страницах системной памяти в структуре MDL , на которую указывает член PMdl , на первую системную страницу памяти для текущей операции. Драйвер может получить физический адрес первой страницы системной памяти, вызвав функцию MmGetMdlPfnArray следующим образом.

MmGetMdlPfnArray(pMdl)[MdlOffset];

Fill

[in] Структура, описывающая операцию заполнения.

Fill.hAllocation

[in] Дескриптор выделения, содержащего содержимое для заполнения.

Fill.FillSize

[in] Размер( в байтах) сведений о памяти для заполнения.

Fill.FillPattern

[in] Шаблон для заполнения назначения. Диспетчер памяти видео использует эти сведения для инициализации памяти видео в определенный шаблон, когда выделение без содержимого сначала отображается. В этом случае источник не существует для запроса заполнения— существует только место назначения.

Fill.Destination

[in] Структура, описывающая выделение назначения для операции заполнения.

Fill.Destination.SegmentId

[in] Идентификатор сегмента в целевом выделении.

Fill.Destination.SegmentAddress

[in] Адрес сегмента назначения. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr

DiscardContent

[in] Структура, описывающая операцию отмены содержимого.

DiscardContent.hAllocation

[in] Дескриптор выделения, содержащего содержимое для отмены.

DiscardContent.Flags

[in] Структура DXGK_DISCARDCONTENTFLAGS , идентифицирующая флаги битового поля, тип операции отмены содержимого для выполнения.

DiscardContent.SegmentId

[in] Идентификатор сегмента в выделении для отмены содержимого.

DiscardContent.SegmentAddress

[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий адрес сегмента. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr В этом расположении содержимое удаляется.

ReadPhysical

[in] Структура, описывающая операцию чтения и физической операции.

ReadPhysical.SegmentId

[in] Идентификатор сегмента, из который считываются данные.

ReadPhysical.PhysicalAddress

[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес в сегменте, который указывает SegmentId , где считываются данные.

WritePhysical

[in] Структура, описывающая операцию записи.

WritePhysical.SegmentId

[in] Идентификатор сегмента, на который записываются данные.

WritePhysical.PhysicalAddress

[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес в сегменте, где записываются данные.

MapApertureSegment

[in] Структура, описывающая операцию сегмента map-aperture с помощью MDL.

MapApertureSegment.hDevice

[in] Дескриптор устройства, которому принадлежит выделение, которое hAllocation указывает, что сопоставляется с сегментом диафрагмы, который указывает SegmentId .

Для общего выделения hDevice устанавливается на устройство, которое диспетчер памяти видео определяется владельцем выделения.

hDevice имеет значение NULL для основного выделения.

MapApertureSegment.hAllocation

[in] Дескриптор выделения, сопоставленного с сегментом диафрагмы, который указывает SegmentId .

hAllocation имеет значение NULL , если буфер DMA сопоставляется с сегментом диафрагмы, так как буферы DMA не создаются явным образом драйвером.

MapApertureSegment.SegmentId

[in] Идентификатор сегмента диафрагмы для настройки.

MapApertureSegment.OffsetInPages

[in] Смещение на страницах с начала сегмента до первых страниц для сопоставления.

MapApertureSegment.NumberOfPages

[in] Количество страниц для сопоставления.

MapApertureSegment.pMdl

[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы памяти физической системы для сопоставления с сегментом диафрагмы.

MapApertureSegment.Flags

[in] Структура DXGK_MAPAPERTUREFLAGS , идентифицирующая флаги битового поля, тип операции map-aperture-segment для выполнения.

MapApertureSegment.MdlOffset

[in] Смещение в страницах системной памяти в структуре MDL , на которую указывает член PMdl , на первую системную страницу памяти для текущей операции. Драйвер может получить физический адрес первой страницы системной памяти, вызвав функцию MmGetMdlPfnArray следующим образом.

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in] Структура, описывающая операцию unmap-aperture-segment.

UnmapApertureSegment.hDevice

[in] Дескриптор устройства, который владеет выделением, которое hAllocation указывает, что не сопоставлено с сегментом диафрагмы, который указывает SegmentId .

Для общего выделения hDevice устанавливается на устройство, которое диспетчер памяти видео определяется владельцем выделения.

hDevice имеет значение NULL для основного выделения.

UnmapApertureSegment.hAllocation

[in] Дескриптор выделения, который не сопоставляется с сегментом диафрагмы, который указывает SegmentId .

hAllocation имеет значение NULL , если буфер DMA не сопоставляется с сегментом диафрагмы, так как буферы DMA не создаются явным образом драйвером.

UnmapApertureSegment.SegmentId

[in] Идентификатор сегмента диафрагмы для настройки.

UnmapApertureSegment.OffsetInPages

[in] Смещение на страницах с начала сегмента до первых страниц до распаку.

UnmapApertureSegment.NumberOfPages

[in] Количество страниц для распаку.

UnmapApertureSegment.DummyPage

[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес страницы заполнителя, где драйвер должен сопоставить диапазон, который не сопоставлен.

SpecialLockTransfer

[in] Структура, описывающая операцию специальной передачи блокировки.

SpecialLockTransfer.hAllocation

[in] Дескриптор выделения, который функция dxgkDdiCreateAllocation драйвера ранее возвращалась в элементе hAllocation структуры DXGK_ALLOCATIONINFO, которая является частью элемента pAllocationInfo структуры DXGKARG_CREATEALLOCATION. Дескриптор выделения указывает на буфер, содержащий данные частного драйвера для передачи специальных блокировок.

SpecialLockTransfer.TransferOffset

[in] Смещение (в байтах) первой страницы в выделении, которое передается. Это смещение применяется только к расположению сегмента. Это смещение не применяется к описанию MDL диапазона памяти. Если драйверу требуется несколько буферов разбиения по страницам для завершения передачи (то есть драйвер возвращает STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER из функции DxgkDdiBuildPagingBuffer ), TransferOffset одинаково для каждого вызова DxgkDdiBuildPagingBuffer для этой передачи.

SpecialLockTransfer.TransferSize

[in] Размер в байтах данных памяти для передачи.

SpecialLockTransfer.Source

[in] Структура, описывающая выделение источника. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент исходного выделения (SegmentAddress) или указатель на MDL для источника (pMdl).

SpecialLockTransfer.Source.SegmentId

[in] Идентификатор сегмента в исходном выделении или ноль, если выделение источника описывается членом pMdl объединения, который содержит источник .

SpecialLockTransfer.Source. (неназванное объединение)

[in] Объединение, содержащее смещение в сегмент исходного выделения (SegmentAddress) или указатель на MDL для источника (pMdl).

SpecialLockTransfer.Source.SegmentAddress

[in] Адрес исходного сегмента, если член SegmentIdисточника является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr

SpecialLockTransfer.Source.pMdl

[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти источника, если элемент SegmentIdисточника равен нулю.

SpecialLockTransfer.Destination

[in] Структура, описывающая выделение назначения. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент целевого выделения (SegmentAddress) или указатель на MDL для назначения (pMdl).

SpecialLockTransfer.Destination.SegmentId

[in] Идентификатор сегмента в целевом выделении или ноль, если целевое выделение описывается членом pMdl объединения, который содержит назначение .

SpecialLockTransfer.Destination. (неназванное объединение)

[in] Объединение, содержащее смещение в сегмент целевого выделения (SegmentAddress) или указатель на MDL для назначения (pMdl).

SpecialLockTransfer.Destination.SegmentAddress

[in] Адрес сегмента назначения, если член SegmentIdназначения является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr

SpecialLockTransfer.Destination.pMdl

[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти для назначения, если элемент SegmentIdназначения равен нулю.

SpecialLockTransfer.Flags

[in] Структура DXGK_TRANSFERFLAGS , идентифицирующая флаги битового поля, тип операции специальной блокировки для выполнения.

SpecialLockTransfer.SwizzlingRangeId

[in] Значение UINT, определяющее диапазон поворота.

SpecialLockTransfer.SwizzlingRangeData

[in] Значение UINT, задающее данные диапазона вибрирования.

InitContextResource

[in] Структура, описывающая операцию инициализации контекста. Поддерживается начиная с Windows 8.

InitContextResource.hAllocation

[in] Дескриптор выделения контекста, созданного при вызове драйвера DxgkCbCreateContextAllocation. Дескриптор этого выделения возвращается в элементе hAllocation структуры DXGKARGCB_CREATECONTEXTALLOCATION . Драйвер передает указатель на эту структуру в параметре ContextAllocation при вызове DxgkCbCreateContextAllocation.

InitContextResource.Destination

[in] Структура, описывающая выделение контекста назначения. Эта структура содержит элемент SegmentId и объединение, содержащее смещение в сегмент выделения контекста назначения (SegmentAddress) или указатель на MDL для назначения (pMdl).

InitContextResource.Destination.SegmentId

[in] Идентификатор сегмента в целевом выделении контекста или ноль, если целевое выделение контекста описывается членом pMdl объединения, который содержит назначение .

InitContextResource.Destination. (неназванное объединение)

[in] Объединение, содержащее смещение в сегмент выделения контекста назначения (SegmentAddress) или указатель на MDL для назначения (pMdl).

InitContextResource.Destination.SegmentAddress

[in] Адрес сегмента назначения, если член SegmentIdназначения является ненулевой. Подсистема графического ядра DirectX вычисляет адрес сегмента в виде суммы смещения сегмента и базового адреса сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr

InitContextResource.Destination.pMdl

[in] Указатель на буфер, содержащий структуру MDL , описывающую страницы системной памяти для назначения, если элемент SegmentIdназначения равен нулю.

InitContextResource.Destination.VirtualAddress

[in] Виртуальный адрес выделения контекста назначения. Этот адрес действителен в течение времени существования выделения контекста.

Выполните процедуры в разделе "Виртуальные адреса для выделения контекста назначения" раздела DxgkCbCreateContextAllocation , чтобы убедиться, что виртуальный адрес действителен.

InitContextResource.Destination.GpuVirtualAddress

Виртуальный адрес GPU ресурса контекста для инициализации.

TransferVirtual

Структура DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL , описывающая операцию, используемую для передачи содержимого выделения между расположениями в памяти.

FillVirtual

Структура DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL , описывающая операцию, используемую для заполнения выделения шаблоном.

UpdatePageTable

Структура DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE , описывающая операцию, используемую для обновления таблицы страниц.

FlushTlb

Структура DXGK_BUILDPAGINGBUFFER_FLUSHTLB , описывающая операцию, используемую для очистки буферов перевода в сторону.

CopyPageTableEntries

Структура DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES , описывающая операцию использования записей таблицы страниц копирования из одного расположения в другое.

UpdateContextAllocation

Структура DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION , описывающая операцию, используемую для обновления содержимого контекста или выделения устройства.

NotifyResidency

Структура DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY , описывающая операцию изменения распределения расположения.

SignalMonitoredFence

[in] Структура DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE , описывающая инструкцию GPU для сигнала отслеживаемого объекта забора на разбиение по страницам в буфер DMA. Доступно начиная с Windows 10 версии 1703 (WDDM 2.2).

MapApertureSegment2

MapApertureSegment2.hDevice

[in] Дескриптор устройства, которому принадлежит выделение, которое hAllocation указывает, что сопоставляется с сегментом диафрагмы, который указывает SegmentId .

Для общего выделения hDevice устанавливается на устройство, которое диспетчер памяти видео определяется владельцем выделения.

hDevice имеет значение NULL для основного выделения.

MapApertureSegment2.hAllocation

[in] Дескриптор драйвера для выделения, сопоставленного с сегментом диафрагмы, который указывает SegmentId .

hAllocation имеет значение NULL , если буфер DMA сопоставляется с сегментом диафрагмы, так как буферы DMA не создаются явным образом драйвером.

MapApertureSegment2.SegmentId

[in] Идентификатор сегмента диафрагмы для настройки.

MapApertureSegment2.OffsetInPages

[in] Смещение на страницах с начала сегмента до первых страниц для сопоставления.

MapApertureSegment2.NumberOfPages

[in] Размер диапазона, сопоставленного в выделении, на страницах.

MapApertureSegment2.Adl

[in] Структура DXGK_ADL со списком дескрипторов адресов (ADL), описывающим сопоставления логических адресов (страницы) для памяти выделения. Этот ADL может быть либо смежным, либо массивом страниц; Драйвер должен иметь возможность обрабатывать оба случая.

MapApertureSegment2.Flags

[in] Структура DXGK_MAPAPERTUREFLAGS , идентифицирующая флаги битового поля, тип операции map-aperture-segment для выполнения.

MapApertureSegment2.AdlOffset

[in] Смещение в ADL до начала диапазона логических адресов, сопоставленных для текущей операции, указанной на страницах системной памяти. Если ADL является непрерывным ADL, то элемент ADL BasePageNumber является начальным адресом непрерывного диапазона памяти. В противном случае используйте элемент ADL Pages для несоотложной памяти.

MapApertureSegment2.CpuVisibleAddress

Если выделение драйвера было создано с набором флагов MapApertureCpuVisible , CpuVisibleAddress является ненулевой указателем на сопоставленный системой виртуальный адрес режима ядра для DXGK_OPERATION_MAP_APERTURE_SEGMENT2 операций. Этот адрес действителен до тех пор, пока выделение сопоставляется с сегментом диафрагмы и освобождается сразу после соответствующего вызова DXGK_OPERATION_UNMAP_APERTURE_SEGMENT для того же выделения.

Если MapApertureCpuVisible не указан, cpuVisibleAddress имеет значение NULL для операций DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .

NotifyFenceResidency

MmapMmu

UnmapMmu

NotifyResidency2

NotifyAllocation

Reserved

Этот элемент зарезервирован и не должен использоваться.

Reserved.Reserved[64]

Этот элемент зарезервирован и не должен использоваться.

hSystemContext

[in] Дескриптор системного контекста для операции разбиения по страницам.

DmaBufferGpuVirtualAddress

Тип данных D3DGPU_VIRTUAL_ADDRESS , указывающий виртуальный адрес, в котором был помещен буфер DMA. Если физический адрес равен нулю, буфер DMA неправильно отображается.

DmaBufferWriteOffset

Смещение текущей операции в байтах с начала буфера DMA.

Замечания

MDL определен в документации по модели драйвера Windows (WDM ).

Класс синхронизации WDDM:

Требования

Требование Ценность
Минимальный поддерживаемый клиент Поддерживается начиная с Windows Vista.
Header d3dkmddi.h (include D3dkmddi.h)

См. также

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES

DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL

DXGK_BUILDPAGINGBUFFER_FLUSHTLB

DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY

DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL

DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION

DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE

DXGK_DISCARDCONTENTFLAGS

DXGK_MAPAPERTUREFLAGS

DXGK_TRANSFERFLAGS

DxgkCbCreateContextAllocation

DxgkDdiBuildPagingBuffer

DxgkDdiCreateAllocation

MDL

MmGetMdlPfnArray

pfnLockCb