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

RopLogon() public method

This ROP logs on to a mailbox or public folder.
public RopLogon ( LogonType logonType, string userESSDN, RopLogonResponse &logonResponse ) : uint
logonType LogonType This Type specifies ongoing action on the mailbox or public folder.
userESSDN string A string that identifies the user to log on to the server.
logonResponse Microsoft.Protocols.TestSuites.Common.RopLogonResponse Response of this ROP.
return uint
        public uint RopLogon(LogonType logonType, string userESSDN, out RopLogonResponse logonResponse)
        {
            this.rawData = null;
            this.response = null;
            this.responseSOHs = null;

            RopLogonRequest logonRequest;
            uint objHandle1 = 0;

            byte[] rawData1 = null;
            object response1 = null;
            List<List<uint>> responseSOHs1 = null;
            logonRequest.RopId = 0xFE;
            logonRequest.LogonId = 0x0;
            logonRequest.OutputHandleIndex = 0x0;

            logonRequest.StoreState = 0;

            if (LogonType.PublicFolder == logonType)
            {
                // Logon to public folders
                logonRequest.LogonFlags = 0x00;

                // Logon to public folders
                logonRequest.OpenFlags = 0x01000002;
                logonRequest.EssdnSize = 0;
                logonRequest.Essdn = null;
            }
            else
            {
                // Logon to a private mailbox
                logonRequest.LogonFlags = 0x01;

                // USE_PER_MDB_REPLID_MAPPING flag.
                logonRequest.OpenFlags = 0x01000000;
                if (userESSDN + "\0" == this.user1ESSDN)
                {
                    logonRequest.EssdnSize = (ushort)Encoding.ASCII.GetByteCount(this.user1ESSDN);
                    logonRequest.Essdn = Encoding.ASCII.GetBytes(this.user1ESSDN);
                }
                else
                {
                    logonRequest.EssdnSize = (ushort)Encoding.ASCII.GetByteCount(this.user2ESSDN);
                    logonRequest.Essdn = Encoding.ASCII.GetBytes(this.user2ESSDN);
                }
            }

            responseSOHs1 = this.DoRPCCall(logonRequest, objHandle1, ref response1, ref rawData1);
            logonResponse = (RopLogonResponse)response1;
            this.mailboxGUID = logonResponse.MailboxGuid;
            uint handle = responseSOHs1[0][logonResponse.OutputHandleIndex];
            return handle;
        }