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