예제 #1
0
        public DrsrClientSessionContext BindOverTcp(
            string serverName,
            ClientSecurityContext securityContext,
            RpceAuthenticationLevel authenticationLevel,
            TimeSpan timeout)
        {
            DrsrClientSessionContext clientSessionContext = new DrsrClientSessionContext();

            if (serverName == null)
            {
                throw new ArgumentNullException("serverName");
            }

            this.rpcAdapter.Bind(
                RpceUtility.RPC_OVER_TCPIP_PROTOCOL_SEQUENCE,
                serverName,
                DrsrUtility.QueryDrsrTcpEndpoint(DrsrRpcInterfaceType.DSAOP, serverName)[0].ToString(),
                securityContext,
                authenticationLevel,
                timeout);

            clientSessionContext.RPCHandle = rpcAdapter.Handle;

            return(clientSessionContext);
        }
예제 #2
0
 public uint DsaExecuteScript(
     DrsrClientSessionContext clientSessionContext,
     uint dwInVersion,
     DSA_MSG_EXECUTE_SCRIPT_REQ?inMessage,
     out uint?outVersion,
     out DSA_MSG_EXECUTE_SCRIPT_REPLY?outMessage)
 {
     return(this.rpcAdapter.IDL_DSAExecuteScript(
                clientSessionContext.RPCHandle,
                dwInVersion,
                inMessage,
                out outVersion,
                out outMessage));
 }
        public object Clone()
        {
            DrsrClientSessionContext ret = new DrsrClientSessionContext();

            ret.domainFunLevel = this.domainFunLevel;
            ret.drsHandle      = this.drsHandle;
            ret.rpcHandle      = this.rpcHandle;
            if (this.serverExtensions.HasValue)
            {
                DRS_EXTENSIONS_INT ext = new DRS_EXTENSIONS_INT();
                ext.cb               = this.serverExtensions.Value.cb;
                ext.ConfigObjGUID    = this.serverExtensions.Value.ConfigObjGUID;
                ext.dwFlags          = this.serverExtensions.Value.dwFlags;
                ext.dwFlagsExt       = this.serverExtensions.Value.dwFlagsExt;
                ext.dwReplEpoch      = this.serverExtensions.Value.dwReplEpoch;
                ext.Pid              = this.serverExtensions.Value.Pid;
                ext.SiteObjGuid      = this.serverExtensions.Value.SiteObjGuid;
                ret.serverExtensions = ext;
            }
            return(ret);
        }
예제 #4
0
        public DrsrClientSessionContext BindOverTcp(
            string serverName,
            string servicePrincipalName,
            Guid?clientGuid,
            String protocolSequence,
            String endPoint,
            String networkOptions,
            ClientSecurityContext securityContext,
            RpceAuthenticationLevel authenticationLevel,
            TimeSpan timeout)
        {
            DrsrClientSessionContext clientSessionContext = new DrsrClientSessionContext();

            uint endpoint;

            endpoint = Convert.ToUInt16(this.InquiryAdldsDynamicPort(servicePrincipalName, clientGuid, protocolSequence, serverName, endPoint, networkOptions));

            if (serverName == null)
            {
                throw new ArgumentNullException("serverName");
            }

            if (servicePrincipalName == null)
            {
                throw new ArgumentNullException("servicePrincipalName");
            }

            this.rpcAdapter.Bind(
                RpceUtility.RPC_OVER_TCPIP_PROTOCOL_SEQUENCE,
                serverName,
                endpoint.ToString(),
                securityContext,
                authenticationLevel,
                timeout);

            clientSessionContext.RPCHandle = rpcAdapter.Handle;

            return(clientSessionContext);
        }