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


структура 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 должен содержать ЛогическиеAddress. Если 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. Обратите внимание, что последовательные записи в AdapterPageArray член NDK_LOGICAL_ADDRESS_MAPPING не обязательно являются смежными страницами в логическом адресном пространстве адаптера. Поэтому потребитель NDK может использовать несколько SGEs для покрытия всех страниц в массиве страниц адаптера.

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях.
минимальный поддерживаемый сервер Windows Server 2012
заголовка ndkpi.h (include 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