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


структура NDK_SGE (ndkpi.h)

Структура NDK_SGE определяет локальные буферы для рабочих запросов NDK.

Синтаксис

typedef struct _NDK_SGE {
  union {
    PVOID               VirtualAddress;
    NDK_LOGICAL_ADDRESS LogicalAddress;
  };
  ULONG  Length;
  UINT32 MemoryRegionToken;
} NDK_SGE;

Члены

VirtualAddress

Виртуальный адрес.

LogicalAddress

Логический адрес.

Length

Длина буфера в байтах.

MemoryRegionToken

Маркер региона памяти. Если для MemoryRegionToken задан маркер, возвращаемый NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), NDK_SGE должен содержать LogicalAddress. Если значение MemoryRegionToken не равно маркеру, возвращаемого NdkGetPrivilegedMemoryRegionToken, структура NDK_SGE должна содержать VirtualAddress. Если структура NDK_SGE используется в рабочем запросе с флагом NDK_OP_FLAG_INLINE , memoryRegionToken может быть недопустимым. Дополнительные сведения о MemoryRegionToken см. в разделе примечаний.

Комментарии

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

Если для элемента MemoryRegionToken задан маркер, возвращаемый NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), NDK_SGE должен содержать логический адрес, возвращаемый функцией NdkBuildLam (NDK_FN_BUILD_LAM) со структурой NDK_LOGICAL_ADDRESS_MAPPING . Обратите внимание, что последовательные записи в элементе AdapterPageArrayNDK_LOGICAL_ADDRESS_MAPPING не обязательно являются смежными страницами в логическом адресном пространстве адаптера. Таким образом, потребитель NDK может использовать несколько SGEs для охвата всех страниц в массиве страниц адаптера.

Если маркер в элементе MemoryRegionToken не равен маркеру, возвращаемого NdkGetPrivilegedMemoryRegionToken, структура NDK_SGE должна содержать виртуальный адрес, который входит в диапазон виртуальных адресов ранее зарегистрированной области памяти.

Если структура NDK_SGE используется в рабочем запросе с флагом NDK_OP_FLAG_INLINE , маркер в MemoryRegionToken может быть недопустимым, поэтому поставщик NDK должен игнорировать его. Если указан флаг NDK_OP_FLAG_INLINE , член VirtualAddress любой структуры NDK_SGE , передаваемой в функцию запроса на работу, должен указывать на буфер, к которому поставщик NDK может обращаться в IRQL меньше или равен DISPATCH_LEVEL. То есть буфер должен гарантированно находиться в физической памяти до тех пор, пока функция рабочего запроса не вернется. Общий размер встроенных данных, передаваемых поставщику в одном вызове, не должен превышать значение параметра InlineDataSize , указанное при создании пары очередей (QP).

Требования

Требование Значение
Минимальная версия клиента Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях.
Минимальная версия сервера Windows Server 2012
Верхняя часть ndkpi.h (включая Ndkpi.h)

См. также раздел

Требования к времени существования объекта NDKPI

NDK_FN_BUILD_LAM

NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN

NDK_FN_READ

NDK_FN_RECEIVE

NDK_FN_SEND

NDK_FN_SRQ_RECEIVE

NDK_FN_WRITE

NDK_LOGICAL_ADDRESS_MAPPING