public static void setMyProcessID(int uid, string serverid, int isLocal) { lock (AppInterProcess._thisSharedLock) { int id = Process.GetCurrentProcess().Id; int num = 3208; byte[] array; if (serverid == null || serverid == "") { array = new byte[8]; System.Array.Clear(array, 0, array.Length); } else { array = System.Text.Encoding.ASCII.GetBytes(serverid); } long num2 = System.BitConverter.ToInt64(array, 0); if (AppInterProcess._semaphoreEcoInstance != null) { AppInterProcess._semaphoreEcoInstance.WaitOne(); byte[] array2 = AppInterProcess.ReadShareArray(0L, (long)num); long num3 = AppInterProcess.getValue64(array2, 0); bool flag2 = false; int num4 = 0; while ((long)num4 < System.Math.Min(num3, 100L)) { int num5 = num4 * 32 + 8; long value = AppInterProcess.getValue64(array2, num5); num5 += 8; long value2 = AppInterProcess.getValue64(array2, num5); num5 += 8; long value3 = AppInterProcess.getValue64(array2, num5); num5 += 8; AppInterProcess.getValue64(array2, num5); if (value == (long)uid && value2 == num2 && value3 == (long)isLocal) { AppInterProcess.setValue64(array2, num5, (long)id); flag2 = true; break; } num4++; } if (!flag2 && num3 < 99L) { int num6 = (int)num3 * 32 + 8; AppInterProcess.setValue64(array2, num6, (long)uid); num6 += 8; AppInterProcess.setValue64(array2, num6, num2); num6 += 8; AppInterProcess.setValue64(array2, num6, (long)isLocal); num6 += 8; AppInterProcess.setValue64(array2, num6, (long)id); num3 += 1L; AppInterProcess.setValue64(array2, 0, num3); } AppInterProcess.WriteShareArray(0L, array2); AppInterProcess._semaphoreEcoInstance.Release(); } } }
public static int getProcessID(int uid, string serverid, int isLocal) { int result; lock (AppInterProcess._thisSharedLock) { int num = 0; int num2 = 3208; byte[] array; if (serverid == null || serverid == "") { array = new byte[8]; System.Array.Clear(array, 0, array.Length); } else { array = System.Text.Encoding.ASCII.GetBytes(serverid.ToUpper()); } long num3 = System.BitConverter.ToInt64(array, 0); if (AppInterProcess._semaphoreEcoInstance != null) { AppInterProcess._semaphoreEcoInstance.WaitOne(); byte[] shared = AppInterProcess.ReadShareArray(0L, (long)num2); long value = AppInterProcess.getValue64(shared, 0); int num4 = 0; while ((long)num4 < System.Math.Min(value, 100L)) { int num5 = num4 * 32 + 8; AppInterProcess.getValue64(shared, num5); num5 += 8; long value2 = AppInterProcess.getValue64(shared, num5); num5 += 8; long value3 = AppInterProcess.getValue64(shared, num5); num5 += 8; long value4 = AppInterProcess.getValue64(shared, num5); num5 += 8; if (value2 == num3 && value3 == (long)isLocal && isLocal == 1) { num = (int)value4; break; } num4++; } AppInterProcess._semaphoreEcoInstance.Release(); } result = num; } return(result); }