FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL 콜백 함수(vmbuskernelmodeclientlibapi.h)

[일부 정보는 상업용으로 출시되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 명시적 또는 묵시적 보증을 하지 않습니다.]

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

보낼 하위 버퍼의 길이입니다. 전체 MDL에 0을 사용합니다.

Flags

플래그. 관련 플래그는 다음과 같습니다.

의미
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
이 패킷은 완료된 것으로 간주할 수 없으며 완료 패킷이 반대 엔드포인트에서 돌아올 때까지 해당 리소스를 해제할 수 없습니다. 이 플래그를 설정해야 합니다.
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
이 길이가 MDL의 ByteCount 필드보다 길더라도 항상 외부 데이터 MDL의 길이에 MdlLength를 사용합니다. 이렇게 하면 페이지 경계로 반올림하여 MDL의 길이를 초과할 수 있습니다. 이 플래그가 설정되면 MDL 체인의 첫 번째 MDL만 사용됩니다.
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
인라인 버퍼는 페이징되며 그에 따라 처리되어야 합니다. 즉, DPC 수준을 입력하기 전에 복사해야 합니다. 사용자 모드 버퍼 검색 또는 액세스 위반 처리는 호출자의 책임입니다.

반환 값

작업이 성공하면 STATUS_SUCCESS 반환하고, 그렇지 않으면 적절한 NTSTATUS 오류 코드를 반환합니다.

설명

이 함수는 MDL 오프셋 및 MDL 길이를 전달할 수 있다는 점에서 VmbPacketSend 함수와 다릅니다.

중요

이 함수는 Vmbkmcl.sys 버스 드라이버에서 제공하는 KMCL(VMBus 커널 모드 클라이언트 라이브러리) 인터페이스를 통해 호출됩니다. KMCL_CLIENT_INTERFACE_V1 구조에서 액세스하는 클라이언트 함수입니다.

자세한 내용은 KMCL_CLIENT_INTERFACE_V1 설명 섹션을 참조 하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1803
머리글 vmbuskernelmodeclientlibapi.h

추가 정보

VmbPacketSend