Share via


EVT_VMB_CHANNEL_SUSPEND 콜백 함수(vmbuskernelmodeclientlibapi.h)

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

클라이언트 엔드포인트에서 채널을 닫거나 삭제할 때 EvtVmbChannelSuspend 콜백 함수가 서버 엔드포인트에서 호출되어 서버를 중지됨 상태로 전환합니다.

구문

EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;

void EvtVmbChannelSuspend(
  [in] VMBCHANNEL Channel
)
{...}

매개 변수

[in] Channel

일시 중단된 채널입니다.

반환 값

없음

설명

채널을 만든 후 클라이언트 드라이버는 VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT 함수를 사용하여 EvtVmbChannelSuspend를 비롯한 상태 변경에 대한 콜백 함수를 지정할 수 있습니다.

실행 중인 채널이 VmbChannelPause 함수를 사용하여 일시 중단되거나 VmbChannelDisable 함수 또는 반대 엔드포인트에 의해 닫힌 경우 KMCL(커널 모드 클라이언트 라이브러리) 은 EvtVmbChannelSuspend를 호출합니다. 이 콜백은 더 이상 EvtVmbChannelProcessPacket 콜백이 실행 중이거나 큐에 대기되지 않음을 보장합니다.

EvtVmbChannelSuspend 는 KMCL 클라이언트가 결국 EvtVmbChannelProcessPacket 을 사용하여 표시된 모든 미해결 패킷을 완료해야 한다는 알림이기도 합니다. 이러한 패킷은 동기적으로 완료될 필요가 없습니다. KMCL 블록이 완료될 때까지 차단됩니다.

또한 KMCL 클라이언트는 VmbPacketSend, VmbPacketSendWithExternalMdl 또는 VmbPacketSendWithExternalPfns 함수를 사용하여 패킷 전송을 중지해야 합니다.

EvtVmbChannelSuspend가 호출되고 더 이상 미해결 수신 패킷이 없을 때까지 활성 채널에서 VmbChannelPause에 대한 호출이 차단됩니다.
채널이 일시 중지되고 닫힐 때까지 VmbChannelDisable 블록에 대한 호출입니다.

이 함수는 미해결 트랜잭션의 완료를 보장합니다. 클라이언트가 버그가 있거나 악의적이거나 게스트 가상 머신이 충돌했을 수 있습니다. 서버는 미해결 트랜잭션을 취소하여 사용 중지해야 합니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 vmbuskernelmodeclientlibapi.h(VmbusKernelModeClientLibApi.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

EvtVmbChannelProcessPacket

VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT

VmbChannelDisable

VmbChannelPause

VmbPacketSend

VmbPacketSendWithExternalMdl

VmbPacketSendWithExternalPfns