структура 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