// Copyright (C) Microsoft Corporation. All rights reserved. // // NOTE: This header is generated by stubwork. Please make any // modifications to the corresponding template files // (.x or .y) and use stubwork to regenerate the header // #ifndef _MBBCX_H_ #define _MBBCX_H_ #ifndef WDF_EXTERN_C #ifdef __cplusplus #define WDF_EXTERN_C extern "C" #define WDF_EXTERN_C_START extern "C" { #define WDF_EXTERN_C_END } #else #define WDF_EXTERN_C #define WDF_EXTERN_C_START #define WDF_EXTERN_C_END #endif #endif WDF_EXTERN_C_START typedef enum _MBB_MBIM_VERSION { MbbMbimVersion1Dot0 = 0, MbbMbimVersion1Dot0Errata, } MBB_MBIM_VERSION; typedef enum _MBB_MBIM_EXTENDED_VERSION { MbbMbimExtendedVersion1Dot0 = 0, MbbMbimExtendedVersion2Dot0, MbbMbimExtendedVersion3Dot0, MbbMbimExtendedVersion4Dot0, MbbMbimExtendedVersionMax = MbbMbimExtendedVersion4Dot0, } MBB_MBIM_EXTENDED_VERSION; typedef enum _MBB_WAKE_REASON_TYPE { MbbWakeReasonTypeRegisterState = 0, MbbWakeReasonTypeSmsReceive, MbbWakeReasonTypeUssdReceive, MbbWakeReasonTypePacketState, MbbWakeReasonTypeUiccChange, } MBB_WAKE_REASON_TYPE; #include #include typedef _Function_class_(EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT) _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) VOID NTAPI EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT( _In_ WDFDEVICE Device, _In_ MBBREQUEST SendRequest ); typedef EVT_MBB_DEVICE_SEND_MBIM_FRAGMENT *PFN_MBB_DEVICE_SEND_MBIM_FRAGMENT; typedef _Function_class_(EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT) _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) VOID NTAPI EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT( _In_ WDFDEVICE Device, _In_ MBBREQUEST ReceiveRequest ); typedef EVT_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT *PFN_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT; typedef _Function_class_(EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA) _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) VOID NTAPI EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA( _In_ WDFDEVICE Device, _In_ DSS_SESSION_ID SessionId, _In_ WDFMEMORY Data ); typedef EVT_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA *PFN_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA; typedef _Function_class_(EVT_MBB_DEVICE_CREATE_ADAPTER) _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS NTAPI EVT_MBB_DEVICE_CREATE_ADAPTER( _In_ WDFDEVICE Device, _Inout_ NETADAPTER_INIT * AdapterInit ); typedef EVT_MBB_DEVICE_CREATE_ADAPTER *PFN_MBB_DEVICE_CREATE_ADAPTER; typedef struct _MBB_DEVICE_CONFIG { ULONG Size; PFN_MBB_DEVICE_SEND_MBIM_FRAGMENT SendMbimFragment; PFN_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT ReceiveMbimFragment; PFN_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA SendDeviceServiceSessionData; PFN_MBB_DEVICE_CREATE_ADAPTER CreateAdapter; } MBB_DEVICE_CONFIG, *PMBB_DEVICE_CONFIG; FORCEINLINE VOID MBB_DEVICE_CONFIG_INIT( _Out_ PMBB_DEVICE_CONFIG Config, _In_ PFN_MBB_DEVICE_SEND_MBIM_FRAGMENT SendMbimFragment, _In_ PFN_MBB_DEVICE_RECEIVE_MBIM_FRAGMENT ReceiveMbimFragment, _In_ PFN_MBB_DEVICE_SEND_DEVICE_SERVICE_SESSION_DATA SendDeviceServiceSessionData, _In_ PFN_MBB_DEVICE_CREATE_ADAPTER CreateAdapter ) { RtlZeroMemory(Config, sizeof(*Config)); Config->Size = sizeof(*Config); Config->SendMbimFragment = SendMbimFragment; Config->ReceiveMbimFragment = ReceiveMbimFragment; Config->SendDeviceServiceSessionData = SendDeviceServiceSessionData; Config->CreateAdapter = CreateAdapter; } #define MBIM_NO_MAXIMUM_FRAGMENT_SIZE 0 typedef struct _MBB_DEVICE_MBIM_PARAMETERS { ULONG Size; MBB_MBIM_VERSION Version; MBB_MBIM_EXTENDED_VERSION ExtendedVersion; ULONG MaximumFragmentSize; } MBB_DEVICE_MBIM_PARAMETERS, *PMBB_DEVICE_MBIM_PARAMETERS; FORCEINLINE VOID MBB_DEVICE_MBIM_PARAMETERS_INIT( _Out_ PMBB_DEVICE_MBIM_PARAMETERS MbimParameters, _In_ MBB_MBIM_VERSION Version, _In_ ULONG MaximumFragmentSize, _In_ MBB_MBIM_EXTENDED_VERSION ExtendedVersion ) { RtlZeroMemory(MbimParameters, sizeof(*MbimParameters)); MbimParameters->Size = sizeof(*MbimParameters); MbimParameters->Version = Version; MbimParameters->ExtendedVersion = ExtendedVersion; MbimParameters->MaximumFragmentSize = MaximumFragmentSize; } typedef struct _MBB_DEVICE_WAKE_CAPABILITIES { ULONG Size; BOOLEAN RegisterState; BOOLEAN SmsReceive; BOOLEAN UssdReceive; BOOLEAN PacketState; BOOLEAN UiccChange; } MBB_DEVICE_WAKE_CAPABILITIES; inline void MBB_DEVICE_WAKE_CAPABILITIES_INIT( _Out_ MBB_DEVICE_WAKE_CAPABILITIES * Capabilities ) { RtlZeroMemory(Capabilities, sizeof(*Capabilities)); Capabilities->Size = sizeof(*Capabilities); } // // MBB Function: MbbDeviceInitConfig // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI NTSTATUS (NTAPI *PFN_MBBDEVICEINITCONFIG)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _Inout_ PWDFDEVICE_INIT DeviceInit ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE NTSTATUS MbbDeviceInitConfig( _Inout_ PWDFDEVICE_INIT DeviceInit ) { return ((PFN_MBBDEVICEINITCONFIG) MbbFunctions[MbbDeviceInitConfigTableIndex])(MbbDriverGlobals, DeviceInit); } // // MBB Function: MbbDeviceInitialize // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI NTSTATUS (NTAPI *PFN_MBBDEVICEINITIALIZE)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ WDFDEVICE Device, _In_ PMBB_DEVICE_CONFIG Config ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE NTSTATUS MbbDeviceInitialize( _In_ WDFDEVICE Device, _In_ PMBB_DEVICE_CONFIG Config ) { return ((PFN_MBBDEVICEINITIALIZE) MbbFunctions[MbbDeviceInitializeTableIndex])(MbbDriverGlobals, Device, Config); } // // MBB Function: MbbDeviceSetMbimParameters // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBDEVICESETMBIMPARAMETERS)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ WDFDEVICE Device, _In_ PMBB_DEVICE_MBIM_PARAMETERS MbimParameters ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE VOID MbbDeviceSetMbimParameters( _In_ WDFDEVICE Device, _In_ PMBB_DEVICE_MBIM_PARAMETERS MbimParameters ) { ((PFN_MBBDEVICESETMBIMPARAMETERS) MbbFunctions[MbbDeviceSetMbimParametersTableIndex])(MbbDriverGlobals, Device, MbimParameters); } // // MBB Function: MbbDeviceResponseAvailable // typedef _IRQL_requires_max_(DISPATCH_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBDEVICERESPONSEAVAILABLE)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ WDFDEVICE Device ); _IRQL_requires_max_(DISPATCH_LEVEL) FORCEINLINE VOID MbbDeviceResponseAvailable( _In_ WDFDEVICE Device ) { ((PFN_MBBDEVICERESPONSEAVAILABLE) MbbFunctions[MbbDeviceResponseAvailableTableIndex])(MbbDriverGlobals, Device); } // // MBB Function: MbbDeviceSendDeviceServiceSessionDataComplete // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBDEVICESENDDEVICESERVICESESSIONDATACOMPLETE)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ WDFMEMORY Data, _In_ NTSTATUS NtStatus ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE VOID MbbDeviceSendDeviceServiceSessionDataComplete( _In_ WDFMEMORY Data, _In_ NTSTATUS NtStatus ) { ((PFN_MBBDEVICESENDDEVICESERVICESESSIONDATACOMPLETE) MbbFunctions[MbbDeviceSendDeviceServiceSessionDataCompleteTableIndex])(MbbDriverGlobals, Data, NtStatus); } // // MBB Function: MbbDeviceReceiveDeviceServiceSessionData // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBDEVICERECEIVEDEVICESERVICESESSIONDATA)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ WDFDEVICE Device, _In_ DSS_SESSION_ID SessionId, _In_ WDFMEMORY Data ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE VOID MbbDeviceReceiveDeviceServiceSessionData( _In_ WDFDEVICE Device, _In_ DSS_SESSION_ID SessionId, _In_ WDFMEMORY Data ) { ((PFN_MBBDEVICERECEIVEDEVICESERVICESESSIONDATA) MbbFunctions[MbbDeviceReceiveDeviceServiceSessionDataTableIndex])(MbbDriverGlobals, Device, SessionId, Data); } // // MBB Function: MbbAdapterInitialize // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI NTSTATUS (NTAPI *PFN_MBBADAPTERINITIALIZE)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ NETADAPTER Adapter ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE NTSTATUS MbbAdapterInitialize( _In_ NETADAPTER Adapter ) { return ((PFN_MBBADAPTERINITIALIZE) MbbFunctions[MbbAdapterInitializeTableIndex])(MbbDriverGlobals, Adapter); } // // MBB Function: MbbAdapterGetSessionId // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI ULONG (NTAPI *PFN_MBBADAPTERGETSESSIONID)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ NETADAPTER Adapter ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE ULONG MbbAdapterGetSessionId( _In_ NETADAPTER Adapter ) { return ((PFN_MBBADAPTERGETSESSIONID) MbbFunctions[MbbAdapterGetSessionIdTableIndex])(MbbDriverGlobals, Adapter); } // // MBB Function: MbbRequestGetBuffer // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI PVOID (NTAPI *PFN_MBBREQUESTGETBUFFER)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ MBBREQUEST Request, _Out_opt_ size_t* BufferSize ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE PVOID MbbRequestGetBuffer( _In_ MBBREQUEST Request, _Out_opt_ size_t* BufferSize ) { return ((PFN_MBBREQUESTGETBUFFER) MbbFunctions[MbbRequestGetBufferTableIndex])(MbbDriverGlobals, Request, BufferSize); } // // MBB Function: MbbRequestGetCorrelationId // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI LPCGUID (NTAPI *PFN_MBBREQUESTGETCORRELATIONID)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ MBBREQUEST Request ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE LPCGUID MbbRequestGetCorrelationId( _In_ MBBREQUEST Request ) { return ((PFN_MBBREQUESTGETCORRELATIONID) MbbFunctions[MbbRequestGetCorrelationIdTableIndex])(MbbDriverGlobals, Request); } // // MBB Function: MbbRequestComplete // typedef _IRQL_requires_max_(DISPATCH_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBREQUESTCOMPLETE)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ MBBREQUEST Request, _In_ NTSTATUS NtStatus ); _IRQL_requires_max_(DISPATCH_LEVEL) FORCEINLINE VOID MbbRequestComplete( _In_ MBBREQUEST Request, _In_ NTSTATUS NtStatus ) { ((PFN_MBBREQUESTCOMPLETE) MbbFunctions[MbbRequestCompleteTableIndex])(MbbDriverGlobals, Request, NtStatus); } // // MBB Function: MbbRequestCompleteWithInformation // typedef _IRQL_requires_max_(DISPATCH_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBREQUESTCOMPLETEWITHINFORMATION)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ MBBREQUEST Request, _In_ NTSTATUS NtStatus, _In_ ULONG_PTR Information ); _IRQL_requires_max_(DISPATCH_LEVEL) FORCEINLINE VOID MbbRequestCompleteWithInformation( _In_ MBBREQUEST Request, _In_ NTSTATUS NtStatus, _In_ ULONG_PTR Information ) { ((PFN_MBBREQUESTCOMPLETEWITHINFORMATION) MbbFunctions[MbbRequestCompleteWithInformationTableIndex])(MbbDriverGlobals, Request, NtStatus, Information); } // // MBB Function: MbbDeviceSetWakeCapabilities // typedef _IRQL_requires_(PASSIVE_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBDEVICESETWAKECAPABILITIES)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ WDFDEVICE Device, _In_ CONST MBB_DEVICE_WAKE_CAPABILITIES* Capabilities ); _IRQL_requires_(PASSIVE_LEVEL) FORCEINLINE VOID MbbDeviceSetWakeCapabilities( _In_ WDFDEVICE Device, _In_ CONST MBB_DEVICE_WAKE_CAPABILITIES* Capabilities ) { ((PFN_MBBDEVICESETWAKECAPABILITIES) MbbFunctions[MbbDeviceSetWakeCapabilitiesTableIndex])(MbbDriverGlobals, Device, Capabilities); } // // MBB Function: MbbDeviceReportWakeReason // typedef _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI VOID (NTAPI *PFN_MBBDEVICEREPORTWAKEREASON)( _In_ PMBB_DRIVER_GLOBALS DriverGlobals, _In_ WDFDEVICE Device, _In_ MBB_WAKE_REASON_TYPE Reason ); _IRQL_requires_max_(PASSIVE_LEVEL) FORCEINLINE VOID MbbDeviceReportWakeReason( _In_ WDFDEVICE Device, _In_ MBB_WAKE_REASON_TYPE Reason ) { ((PFN_MBBDEVICEREPORTWAKEREASON) MbbFunctions[MbbDeviceReportWakeReasonTableIndex])(MbbDriverGlobals, Device, Reason); } WDF_EXTERN_C_END #endif // _MBBCX_H_