Example #1
0
        private static CDC_DC_STATUS_INFO MarshalCdcDcStatusInfo(IntPtr dcNativeStatus)
        {
            CDC_DC_STATUS_INFO result = (CDC_DC_STATUS_INFO)Marshal.PtrToStructure(
                dcNativeStatus,
                typeof(CDC_DC_STATUS_INFO));

            return(result);
        }
Example #2
0
        public void CdcGetDCStatus(
            string pwszDCName,
            string pwszDomainName,
            out CDC_DC_STATUS_INFO dcStatus,
            out VMAFD_HEARTBEAT_STATUS hbStatus
            )
        {
            string siteName       = string.Empty;
            IntPtr dcNativeStatus = IntPtr.Zero;
            IntPtr hbHbStatus     = IntPtr.Zero;

            try
            {
                UInt32 error = Adaptor.CdcGetDCStatusInfoA(
                    this.session.ServerContext,
                    pwszDCName,
                    pwszDomainName,
                    out dcNativeStatus,
                    out hbHbStatus);
                if (error != 0)
                {
                    throw new VmAfdException(error);
                }

                dcStatus = MarshalCdcDcStatusInfo(dcNativeStatus);
                hbStatus = MarshalHeartbeatStatus(hbHbStatus);
            }
            finally
            {
                if (dcNativeStatus != IntPtr.Zero)
                {
                    Adaptor.CdcFreeDCStatusInfoA(dcNativeStatus);
                }

                if (hbHbStatus != IntPtr.Zero)
                {
                    Adaptor.VmAfdFreeHeartbeatStatusA(hbHbStatus);
                }
            }
        }