Microsoft.Protocols.TestSuites.MS_OXORULE.MS_OXORULEAdapter.DoRPCCall C# (CSharp) Method

DoRPCCall() private method

Process and send ROP request.
private DoRPCCall ( ISerializable ropRequest, uint objHandle, object &response, byte &rawData ) : List>
ropRequest ISerializable ROP request objects.
objHandle uint Server object handle in request.
response object ROP response objects.
rawData byte The ROP response payload.
return List>
        private List<List<uint>> DoRPCCall(ISerializable ropRequest, uint objHandle, ref object response, ref byte[] rawData)
        {
            List<ISerializable> requestRops = new List<ISerializable>
            {
                ropRequest
            };

            List<uint> requestSOH = new List<uint>
            {
                objHandle
            };

            if (Common.IsOutputHandleInRopRequest(ropRequest))
            {
                // Add an element for server output object handle, set default value to 0xFFFFFFFF.
                requestSOH.Add(0xFFFFFFFF);
            }

            List<IDeserializable> responseRops = new List<IDeserializable>();
            List<List<uint>> responseSOHs = new List<List<uint>>();

            // 0x10008 specifies the maximum size of the rgbOut buffer to place in Response.
            uint ret = this.oxcropsClient.RopCall(requestRops, requestSOH, ref responseRops, ref responseSOHs, ref rawData, 0x10008);
            Site.Assert.AreEqual<uint>(OxcRpcErrorCode.ECNone, ret, "ROP call should be successful here, the error code is: {0}", ret);
            if (responseRops.Count != 0)
            {
                response = responseRops[0];
            }

            this.VerifyMAPITransport();
            return responseSOHs;
        }
        #endregion