The ClientRequest method is called by the client to submit requests to the server.

 void ClientRequest(
   [in] PCONTEXT_HANDLE_TYPE phContext,
   [in, out, length_is(*plUsedSize), size_is(lNeededSize)] 
     unsigned char* pBuffer,
   [in] long lNeededSize,
   [in, out] long* plUsedSize
 );

phContext: Parameter that MUST contain the context handle of type PCONTEXT_HANDLE_TYPE.

pBuffer: Packet that MUST contain event packets or function calls. The packet follows the structure of a TAPI32_MSG (section 2.2.5.2) packet. The Req_Func field of this packet contains information about the operation to be performed on the server.

lNeededSize: The size, in bytes, of a valid pBuffer.

plUsedSize: The size, in bytes, of a valid pBuffer data. If any variable-length input data is specified, both the size of the input data length and all the padding bytes are included, or else all the padding bytes are excluded.

Return Values: This method has no return values. However, the status of the request is encapsulated within the pBuffer parameter and contained in the TAPI32_MSG.Ack_ReturnValue field.

Exceptions Thrown:

No exceptions are thrown beyond those thrown by the underlying RPC protocol as specified in [MS-RPCE].

The opnum field value for this method is 1.

When processing a call, the server MUST do the following:

Depending on the value of Req_Func in pBuffer, the server performs additional checks described as follows:

When Req_Func is equal to 47 (Initialize):

When Req_Func is equal to 52 (NegotiateAPIVersion):

When Req_Func is equal to 34 (GetDevCaps):

When Req_Func is equal to 21 (GetAddressCaps):

When Req_Func is equal to 9 (Close):

When Req_Func is equal to 86 (Shutdown):

When Req_Func is equal to 4 (Accept):

When Req_Func is equal to 5 (AddToConference):

When Req_Func is equal to 6 (AgentSpecific):

When Req_Func is equal to 7 (Answer):

When Req_Func is equal to 8 (BlindTransfer):

When Req_Func is equal to 12 (DeallocateCall):

When Req_Func is equal to 10 (CompleteCall):

When Req_Func is equal to 11 (CompleteTransfer):

When Req_Func is equal to 146 (CreateAgent):

When Req_Func is equal to 147 (CreateAgentSession):

When Req_Func is equal to 13 (DevSpecific):

When Req_Func is equal to 14 (DevSpecificFeature):

When Req_Func is equal to 15 (Dial):

When Req_Func is equal to 16 (Drop):

When Req_Func is equal to 18 (GatherDigits):

When Req_Func is equal to 19 (GenerateDigits):

When Req_Func is equal to 20 (GenerateTone):

When Req_Func is equal to 22 (GetAddressID):

When Req_Func is equal to 23 (GetAddressStatus):

When Req_Func is equal to 24 (GetAgentActivityList):

When Req_Func is equal to 25 (GetAgentCaps):

When Req_Func is equal to 26 (GetAgentGroupList):

When Req_Func is equal to 148 (GetAgentInfo):

When Req_Func is equal to 149 (GetAgentSessionInfo):

When Req_Func is equal to 150 (GetAgentSessionList):

When Req_Func is equal to 27 (GetAgentStatus):

When Req_Func is equal to 140 (GetCallHubTracking):

When Req_Func is equal to 141 (GetCallIDs):

When Req_Func is equal to 30 (GetCallInfo):

When Req_Func is equal to 31 (GetCallStatus):

When Req_Func is equal to 35 (GetDevConfig):

When Req_Func is equal to 152 (GetGroupList):

When Req_Func is equal to 37 (GetID):

When Req_Func is equal to 38 (GetLineDevStatus):

When Req_Func is equal to 39 (GetNewCalls):

When Req_Func is equal to 40 (GetNumAddressIDs):

When Req_Func is equal to 158 (GetProxyStatus):

When Req_Func is equal to 151 (GetQueueInfo):

When Req_Func is equal to 153 (GetQueueList):

When Req_Func is equal to 46 (Hold):

When Req_Func is equal to 49 ( MonitorDigits):

When Req_Func is equal to 50 (MonitorMedia):

When Req_Func is equal to 51 (MonitorTones):

When Req_Func is equal to 53 (NegotiateExtVersion):

When Req_Func is equal to 55 (Park):

When Req_Func is equal to 56 (Pickup):

When Req_Func is equal to 60 (Redirect):

When Req_Func is equal to 62 (ReleaseUseruserInfo):

When Req_Func is equal to 63 (RemoveFromConference):

When Req_Func is equal to 64 (SecureCall):

When Req_Func is equal to 128 (SelectExtVersion):

When Req_Func is equal to 65 (SendUserUserInfo):

When Req_Func is equal to 66 (SetAgentActivity):

When Req_Func is equal to 67 (SetAgentGroup):

When Req_Func is equal to 154 (SetAgentMeasurementPeriod):

When Req_Func is equal to 155 (SetAgentSessionState):

When Req_Func is equal to 68 (SetAgentState):

When Req_Func is equal to 157 (SetAgentStateEx):

When Req_Func is equal to 70 (SetAppSpecific):

When Req_Func is equal to 71 (SetCallData):

When Req_Func is equal to 143 (SetCallhubTracking):

When Req_Func is equal to 72 (SetCallParams):

When Req_Func is equal to 74 (SetCallqualityofservice):

When Req_Func is equal to 75 (SetCallTreatment):

When Req_Func is equal to 76 (SetDefaultMediaDetection):

When Req_Func is equal to 77 (SetDevConfig):

When Req_Func is equal to 78 (SetLineDevStatus):

When Req_Func is equal to 79 (SetMediaControl):

When Req_Func is equal to 80 (SetMediaMode):

When Req_Func is equal to 156 (SetQueueMeasurementPeriod):

When Req_Func is equal to 82 (SetStatusMessages):

When Req_Func is equal to 83 (SetTerminal):

When Req_Func is equal to 87 (SwapHold):

When Req_Func is equal to 88 (UncompleteCall):

When Req_Func is equal to 89 (Unhold):

When Req_Func is equal to 90 (Unpark):

When Req_Func is equal to 54 (Open):

When Req_Func is equal to 127 (ConditionalMediaDetection):

When Req_Func is equal to 17 (Forward):

When Req_Func is equal to 48 (MakeCall):

When Req_Func is equal to 57 (PrepareAddtoConference):

When Req_Func is equal to 84 (SetUpConference):

When Req_Func is equal to 85 (SetUpTransfer):

LINECALLPARAMS packet is invalid if (this validity is checked as part of Open, ConditionalMediaDetection, Forward, MakeCall, PrepareAddtoConference, SetUpConference, and SetUpTransfer requests):

When Req_Func is equal to 106 (Initialize):

When Req_Func is equal to 108 (NegotiateAPIVersion):

When Req_Func is equal to 95 (GetDevCaps):

When Req_Func is equal to 107 (Open):

When Req_Func is equal to 91 (Close):

When Req_Func is equal to 119 (Shutdown):

When Req_Func is equal to 92 (DevSpecific):

When Req_Func is equal to 93 (GetButtonInfo):

When Req_Func is equal to 94 (GetData):

When Req_Func is equal to 96 (GetDisplay):

When Req_Func is equal to 97 (GetGain):

When Req_Func is equal to 98 (GetHookSwitch):

When Req_Func is equal to 99 (GetID):

When Req_Func is equal to 101 (GetLamp):

When Req_Func is equal to 102 (GetRing):

When Req_Func is equal to 103 (GetStatus):

When Req_Func is equal to 105 (GetVolume):

When Req_Func is equal to 109 (NegotiateExtVersion):

When Req_Func is equal to 129 (SelectExtVersion):

When Req_Func is equal to 110 (SetButtonInfo):

When Req_Func is equal to 111 (SetData):

When Req_Func is equal to 112 (SetDisplay):

When Req_Func is equal to 113 (SetGain):

When Req_Func is equal to 114 (SetHookSwitch):

When Req_Func is equal to 115 (SetLamp):

When Req_Func is equal to 116 (SetRing):

When Req_Func is equal to 117 (SetStatusMessages):

When Req_Func is equal to 118 (SetVolume):

When Req_Func is equal to 131 (GetAvailableProviders):

When Req_Func is equal to 165 (GetDeviceFlags):

When Req_Func is equal to 132 (GetLineInfo):

When Req_Func is equal to 133 (GetPhoneInfo):

When Req_Func is equal to 42 (GetProviderList):

When Req_Func is equal to 134 (GetServerConfig):

When Req_Func is equal to 135 (SetLineInfo):

When Req_Func is equal to 136 (SetPhoneInfo):

When Req_Func is equal to 1 (GetUIDllName):

When Req_Func is equal to 2 (TUISPIDLLCallBack):

When Req_Func is equal to 3 (FreeDialogInstance):

When Req_Func is equal to 137 (SetServerConfig):

When Req_Func is equal to 0 (GetAsyncEvents):

When Req_Func is equal to 130 (NegotiateAPIVersionForAllDevices):

When Req_Func is equal to 161 (RSPSetEventFilterMasks):