Beispiel #1
0
		// Token: 0x06000080 RID: 128 RVA: 0x00002444 File Offset: 0x00001844
		public unsafe static uint Open(string serverName, string sgGuid, string clientId, string sgBaseName, string targetDir, [MarshalAs(UnmanagedType.U1)] bool fCircularLogging, ReplicaType replicaType, uint rpcTimeoutMsecs, out uint dwExtError, out CLogShipContext logshipContext)
		{
			void* ptr = null;
			CLogShipContext clogShipContext = null;
			dwExtError = 0U;
			ExTraceGlobals.CLogShipContextTracer.TraceDebug(0L, "enter CLogShipContext::Open");
			int num;
			if (!string.IsNullOrEmpty(serverName) && !string.IsNullOrEmpty(sgGuid) && !string.IsNullOrEmpty(sgBaseName) && !string.IsNullOrEmpty(targetDir))
			{
				ushort* ptr2 = (ushort*)Marshal.StringToHGlobalUni(serverName).ToPointer();
				ushort* ptr3 = (ushort*)Marshal.StringToHGlobalUni(sgGuid).ToPointer();
				ushort* ptr4 = (ushort*)Marshal.StringToHGlobalUni(clientId).ToPointer();
				ushort* ptr5 = (ushort*)Marshal.StringToHGlobalUni(sgBaseName).ToPointer();
				ushort* ptr6 = (ushort*)Marshal.StringToHGlobalUni(targetDir).ToPointer();
				object[] args = new object[]
				{
					serverName,
					sgGuid,
					sgBaseName,
					targetDir,
					fCircularLogging
				};
				ExTraceGlobals.CLogShipContextTracer.TraceDebug(0L, "HrLogShipOpen with serverName={0}, sgGuid={1}, sgBaseName={2}, targetDir={3}, fCircularLogging={4}", args);
				clogShipContext = new CLogShipContext();
				RuntimeHelpers.PrepareConstrainedRegions();
				try
				{
				}
				finally
				{
					num = <Module>.HrESELogShipOpenEx(ptr2, (ushort*)(&<Module>.?A0x885d7a58.g_wszEndpointAnnotation), ptr3, ptr4, ptr5, ptr6, fCircularLogging ? 1 : 0, replicaType, rpcTimeoutMsecs, &ptr);
					if (null == ptr)
					{
						ExTraceGlobals.CLogShipContextTracer.TraceDebug<string>(0L, "Failed to create CLogShipContext for SG {0}. Attempting connect to multi-process server", sgGuid);
						ushort* wszLogShipServer = ptr2;
						ushort* ptr7 = ptr3;
						num = <Module>.HrESELogShipOpenEx(wszLogShipServer, ptr7, ptr7, ptr4, ptr5, ptr6, fCircularLogging ? 1 : 0, replicaType, rpcTimeoutMsecs, &ptr);
						if (null == ptr)
						{
							goto IL_15A;
						}
					}
					IntPtr handle = (IntPtr)ptr;
					clogShipContext.SetHandle(handle);
					ExTraceGlobals.CLogShipContextTracer.TraceDebug<string>((long)clogShipContext.GetHashCode(), "created CLogShipContext for SG {0}", sgGuid);
					IL_15A:;
				}
				if (null == ptr || -939585531 == num || -939585532 == num)
				{
					int lastWin32Error = Marshal.GetLastWin32Error();
					dwExtError = (uint)lastWin32Error;
					ExTraceGlobals.CLogShipContextTracer.TraceError<int, uint>(0L, "HrLogShipOpen returned hr={0:X8}, dwExtError={1:X8}", num, (uint)lastWin32Error);
				}
				IntPtr hglobal = new IntPtr((void*)ptr2);
				Marshal.FreeHGlobal(hglobal);
				IntPtr hglobal2 = new IntPtr((void*)ptr3);
				Marshal.FreeHGlobal(hglobal2);
				IntPtr hglobal3 = new IntPtr((void*)ptr4);
				Marshal.FreeHGlobal(hglobal3);
				IntPtr hglobal4 = new IntPtr((void*)ptr5);
				Marshal.FreeHGlobal(hglobal4);
				IntPtr hglobal5 = new IntPtr((void*)ptr6);
				Marshal.FreeHGlobal(hglobal5);
			}
			else
			{
				num = -939587631;
			}
			ExTraceGlobals.CLogShipContextTracer.TraceDebug<int>(0L, "leave CLogShipContext::Open, hr = {0:X8}", num);
			logshipContext = clogShipContext;
			return num;
		}
		public void MakeReplica(string name, string description, ReplicaType options)
		{
			db.MakeReplica(name, description, options);
		}