FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL функция обратного вызова (vmbuskernelmodeclientlibapi.h)

[Некоторые сведения относятся к предварительно выпущенным продуктам, которые могут быть существенно изменены до его коммерческого выпуска. Майкрософт не дает никаких гарантий, явных или подразумеваемых, в отношении предоставленной здесь информации.]

Функция VmbPacketSendWithExternalMdl отправляет данные в буфер пакетов или внешний список дескрипторов памяти (MDL). Функция связывает эти данные с объектом пакета VMBus, который представляет пакет на протяжении всего времени существования транзакции.

Синтаксис

FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL FnVmbPacketSendWithExternalMdl;

NTSTATUS FnVmbPacketSendWithExternalMdl(
  __drv_aliasesMem VMBPACKET PacketObject,
  PVOID Buffer,
  UINT32 BufferLength,
  PMDL ExternalDataMdl,
  UINT32 MdlOffset,
  UINT32 MdlLength,
  UINT32 Flags
)
{...}

Параметры

PacketObject

Дескриптор для объекта пакета VMBus.

Buffer

Буфер, содержащий пакет команд, отправляемый через кольцевой буфер VMBus.

BufferLength

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

ExternalDataMdl

MDL, описывающий буфер данных, связанный с пакетом.

MdlOffset

Смещение от буфера, описанного MDL, с которого начинаются данные.

MdlLength

Длина отправляемого под буфера. Используйте 0 для всего MDL.

Flags

Флаги. Ниже приведены соответствующие флаги.

Значение Значение
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
Этот пакет нельзя считать завершенным, и его ресурсы не могут быть освобождены до тех пор, пока пакет завершения не вернется из противоположной конечной точки. Этот флаг должен быть установлен.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
Всегда используйте MdlLength для длины MDL внешних данных, даже если эта длина превышает значение поля ByteCount MDL. Это позволяет только превысить длину MDL путем округления до границы страницы. Если этот флаг установлен, используется только первый MDL в цепочке MDL.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
Встроенный буфер помещается на страницы и должен обрабатываться соответствующим образом. Это означает, что его необходимо скопировать перед переходом на уровень DPC. За проверку буферов пользовательского режима или обработку нарушений доступа отвечает вызывающий объект.

Возвращаемое значение

Возвращает STATUS_SUCCESS, если операция выполнена успешно, или соответствующий код ошибки NTSTATUS в противном случае.

Комментарии

Эта функция отличается от функции VmbPacketSend тем, что позволяет передавать смещение MDL и длину MDL.

Важно!

Эта функция вызывается через интерфейс клиентской библиотеки режима ядра vmbus (KMCL), предоставляемый драйвером Vmbkmcl.sys шины. Это клиентская функция, доступ к ней осуществляется из структуры KMCL_CLIENT_INTERFACE_V1 .

Дополнительные сведения см. в разделе Примечания KMCL_CLIENT_INTERFACE_V1.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1803
Верхняя часть vmbuskernelmodeclientlibapi.h

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

VmbPacketSend