Example #1
0
 /// <summary>
 /// Create a .NET wait handle from an object.
 /// </summary>
 /// <param name="obj">The object to create the wait handle on</param>
 internal NtWaitHandle(NtObject obj)
 {
     using (SafeKernelObjectHandle handle = NtObject.DuplicateHandle(obj.Handle)) {
         SafeWaitHandle = new SafeWaitHandle(handle.DangerousGetHandle(), true);
         handle.SetHandleAsInvalid();
     }
 }
Example #2
0
 private static SafeRegistryHandle DuplicateAsRegistry(SafeHandle handle)
 {
     using (SafeKernelObjectHandle dup_handle = DuplicateHandle(NtProcess.Current, handle, NtProcess.Current))
     {
         SafeRegistryHandle ret = new SafeRegistryHandle(dup_handle.DangerousGetHandle(), true);
         dup_handle.SetHandleAsInvalid();
         return(ret);
     }
 }