private OpenEvent_internal ( string name, EventWaitHandleRights rights, MonoIOError &error ) : |
||
name | string | |
rights | EventWaitHandleRights | |
error | MonoIOError | |
return |
public static EventWaitHandle OpenExisting(string name, EventWaitHandleRights rights) { if (name == null) { throw new ArgumentNullException("name"); } if ((name.Length == 0) || (name.Length > 260)) { throw new ArgumentException("name", Locale.GetText("Invalid length [1-260].")); } MonoIOError error; IntPtr handle = NativeEventCalls.OpenEvent_internal(name, rights, out error); if (handle == (IntPtr)null) { if (error == MonoIOError.ERROR_FILE_NOT_FOUND) { throw new WaitHandleCannotBeOpenedException(Locale.GetText("Named Event handle does not exist: ") + name); } else if (error == MonoIOError.ERROR_ACCESS_DENIED) { throw new UnauthorizedAccessException(); } else { throw new IOException(Locale.GetText("Win32 IO error: ") + error.ToString()); } } return(new EventWaitHandle(handle)); }
private static OpenExistingResult OpenExistingWorker(string name, EventWaitHandleRights rights, out EventWaitHandle result) { if (name == null) { throw new ArgumentNullException("name", Environment.GetResourceString("ArgumentNull_WithParamName")); } if (name.Length == 0) { throw new ArgumentException(Environment.GetResourceString("Argument_EmptyName"), "name"); } if (null != name && System.IO.Path.MAX_PATH < name.Length) { throw new ArgumentException(Environment.GetResourceString("Argument_WaitHandleNameTooLong", name)); } Contract.EndContractBlock(); result = null; #if MOBILE throw new NotSupportedException(); #else #if MONO int errorCode; var myHandle = new SafeWaitHandle(NativeEventCalls.OpenEvent_internal(name, rights, out errorCode), true); #else #if FEATURE_MACL SafeWaitHandle myHandle = Win32Native.OpenEvent((int)rights, false, name); #else SafeWaitHandle myHandle = Win32Native.OpenEvent(Win32Native.EVENT_MODIFY_STATE | Win32Native.SYNCHRONIZE, false, name); #endif #endif if (myHandle.IsInvalid) { #if !MONO int errorCode = Marshal.GetLastWin32Error(); #endif if (Win32Native.ERROR_FILE_NOT_FOUND == errorCode || Win32Native.ERROR_INVALID_NAME == errorCode) { return(OpenExistingResult.NameNotFound); } if (Win32Native.ERROR_PATH_NOT_FOUND == errorCode) { return(OpenExistingResult.PathNotFound); } if (null != name && 0 != name.Length && Win32Native.ERROR_INVALID_HANDLE == errorCode) { return(OpenExistingResult.NameInvalid); } //this is for passed through Win32Native Errors __Error.WinIOError(errorCode, ""); } result = new EventWaitHandle(myHandle); return(OpenExistingResult.Success); #endif }
public static bool TryOpenExisting(string name, EventWaitHandleRights rights, out EventWaitHandle result) { if (name == null) { throw new ArgumentNullException("name"); } if ((name.Length == 0) || (name.Length > 260)) { throw new ArgumentException("name", Locale.GetText("Invalid length [1-260].")); } MonoIOError error; IntPtr handle = NativeEventCalls.OpenEvent_internal(name, rights, out error); if (handle == (IntPtr)null) { result = null; return(false); } result = new EventWaitHandle(handle); return(true); }