Share via


EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT 콜백 함수(mbbcx.h)

클라이언트 드라이버의 EvtMbbDeviceSendMbimFragment 이벤트 콜백 함수는 디바이스에 MBIM 제어 메시지로 지정된 작업을 수행하도록 지시합니다. 이 콜백 함수는 MBIM 사양에 정의된 SendEncapsulatedCommand 요청과 동일합니다.

구문

EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT EvtMbbDeviceSendMbimFragment;

void EvtMbbDeviceSendMbimFragment(
  WDFDEVICE Device,
  MBBREQUEST SendRequest
)
{...}

매개 변수

Device

WdfDeviceCreate에 대한 이전 호출에서 얻은 클라이언트 드라이버의 프레임워크 디바이스 개체에 대한 핸들입니다.

SendRequest

디바이스에 조각화된 MBIM 메시지를 보내는 요청을 나타내는 프레임워크 개체에 대한 핸들입니다.

반환 값

없음

설명

MBBCx 클라이언트 드라이버는 MbbDeviceInitialize를 호출하여 EvtMbbDeviceSendMbimFragment 콜백 함수를 등록해야 합니다.

MBBCx 프레임워크는 클라이언트 드라이버에 MBIM 컨트롤 메시지 형식의 명령을 실행하려는 경우 이 콜백 함수를 호출합니다. MBIM 컨트롤 메시지의 크기가 MBB_DEVICE_MBIM_PARAMETERS 구조에서 클라이언트 드라이버가 설정한 최대 조각 크기보다 큰 경우 MBBCx 프레임워크는 MBIM 컨트롤 메시지를 여러 조각화된 메시지로 분할하고 조각화된 메시지당 한 번 이 콜백 함수를 호출합니다.

전송되는 실제 MBIM 메시지 조각을 가져오기 위해 클라이언트 드라이버는 MbbRequestGetBuffer 를 호출하여 MBIM 메시지 조각이 저장된 버퍼를 가져와야 합니다. 디바이스가 제어 요청을 성공적으로 수락했거나 오류 조건이 발생하면 클라이언트 드라이버는 MbbRequestComplete 를 비동기적으로 또는 동기적으로 호출하여 MBBCx에 이를 승인해야 합니다.

자세한 내용은 MBIM 제어 메시지 처리를 참조하세요.

예제

간결하고 명확하게 하기 위해 오류 처리 코드는 이 예제에서 제외되었습니다.

VOID
EvtMbbDeviceSendMbimFragment(
    WDFDEVICE  Device,
    MBBREQUEST SendRequest
)
{
    // The client driver-specified framework object context
    PMY_DEVICE_CONTEXT myContext = GetMyDeviceContext(Device);

    size_t bufferSize = 0;
    PVOID buffer = MbbRequestGetBuffer(SendRequest, &bufferSize);

    // This client driver example uses asynchronous completion
    auto myDeviceSendCompletionRoutine = [](MBBREQUEST SendRequest, NTSTATUS NtStatus)
    {
        //Acknowledge back to MBBCx
        MbbRequestComplete(SendRequest, NtStatus);
    };

    // The client driver-specified function call into its device
    NTSTATUS sendStatus = MyDeviceAsyncSend(

        // The client driver-specific handle
        myContext->MyDeviceHandle,

        // The context for completion
        SendRequest,

        // MBIM message               
        buffer,

        // MBIM message size
        bufferSize,   

        // Can be used for logging purpose, for example              
        MbbRequestGetActivityId(SendRequest), 

        // The client driver-specific completion routine
        myDeviceSendCompletionRoutine);

    if (sendStatus != STATUS_PENDING)
    {
        // Acknowledge back to MBBCx
        myDeviceSendCompletionRoutine(
            SendRequest,
            sendStatus);
    }
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1809
대상 플랫폼 유니버설
최소 KMDF 버전 1.27
머리글 mbbcx.h
IRQL <= DISPATCH_LEVEL