структура 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;
    struct {
      UINT Reserved[64];
    } Reserved;
  };
  HANDLE                           hSystemContext;
  D3DGPU_VIRTUAL_ADDRESS           DmaBufferGpuVirtualAddress;
  UINT                             DmaBufferWriteOffset;
} DXGKARG_BUILDPAGINGBUFFER;

Члены

pDmaBuffer

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

DmaSize

[вход/выход] Размер (в байтах) буфера подкачки, который указывает pDmaBuffer .

pDmaBufferPrivateData

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

DmaBufferPrivateDataSize

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

Operation

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

MultipassOffset

[вход/выход] Значение 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объекта Source не равен нулю. Подсистема ядра графики 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объекта Destination не является нулевым. Подсистема ядра графики DirectX вычисляет адрес сегмента как сумму смещения сегмента и базовый адрес сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Destination.pMdl

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

Transfer.Flags

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

Transfer.MdlOffset

[in] Смещение на страницах системной памяти в структуре MDL , на которую указывает элемент pMdl , на первую страницу системной памяти для текущей операции. Драйвер может получить физический адрес первой страницы системной памяти, вызвав функцию [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#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), указывающий физический адрес в сегменте, заданном SegmentId , где записываются данные.

MapApertureSegment

[in] Структура, описывающая операцию map-aperture-segment с использованием 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](/windows-hardware/drivers/kernel/mm-bad-pointer#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объекта Source не равен нулю. Подсистема ядра графики 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объекта Destination не является нулевым. Подсистема ядра графики DirectX вычисляет адрес сегмента как сумму смещения сегмента и базовый адрес сегмента: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Destination.pMdl

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

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 объединения, содержащегося в destination .

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

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

InitContextResource.Destination.SegmentAddress

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

InitContextResource.Destination.pMdl

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

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, то элемент BasePageNumber ADL является начальным адресом непрерывного диапазона памяти. В противном случае используйте элемент Страницы ADL для несмежной памяти.

MapApertureSegment2.CpuVisibleAddress

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

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

Reserved

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

Reserved.Reserved[64]

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

hSystemContext

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

DmaBufferGpuVirtualAddress

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

DmaBufferWriteOffset

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

Комментарии

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

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

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows Vista.
Верхняя часть d3dkmddi.h (включая 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] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray

pfnLockCb