Commit Graph

383 Commits

Author SHA1 Message Date
Alexandre Julliard 0eefa76791 ntdll: Suspend the process before attaching dlls, using the process initial context.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-19 12:43:00 +02:00
Michael Müller a78d419420 server: Assign a default label to all tokens.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-19 09:50:32 +02:00
Sebastian Lackner 4fc5d8873c server: Do not shutdown server in persistent mode when creation of first process fails.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-19 09:48:08 +02:00
Michael Müller 7c08e787b1 server: Implement setting a security descriptor when duplicating tokens.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-15 11:12:24 +02:00
Alex Henrie 146cf041d9 ntdll: Always fill PagefileUsage counter with a nonzero value on Linux.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-17 21:57:12 +02:00
Alex Henrie 19a79f4228 ntdll: Implement ProcessVmCounters for Linux for other processes.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-09 16:37:42 -05:00
Jacek Caban 6ffe08459f server: Cancel process asyncs on process termination.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-01 15:25:34 +01:00
Jacek Caban 055918c982 server: Store async list in process object and use that to find async in cansel_async request.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-01 13:50:27 +01:00
Roman Pisl ddfc5275af process: Make PROCESS_QUERY_LIMITED_INFORMATION sufficient for QueryFullProcessImageName().
Signed-off-by: Roman Pisl <rpisl@seznam.cz>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-17 16:55:14 -07:00
Sebastian Lackner 7c06f1c218 server: Do not store unix_pid in process_snapshot struct.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-07 23:54:44 +09:00
Alexandre Julliard 80f3fda934 server: Add support for maintaining a client-side directory cache.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-02 14:39:16 +09:00
Sebastian Lackner bae3dcc295 server: Do not hold reference on parent process.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-25 18:48:19 +09:00
Sebastian Lackner 1025ed38c0 server: Increase size of PID table and do not reuse recently freed ptids.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-25 18:48:19 +09:00
Alexandre Julliard 3ea7f7d2f4 server: Set the security descriptor at object creation.time.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-12 23:07:30 +09:00
Alexandre Julliard ff9d90bbb0 server: Use a standard object for object attribute roots instead of a directory.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-12 23:07:30 +09:00
Alexandre Julliard b21a324070 server: Use the link_name operation to create named objects.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-05 00:20:01 +09:00
Alexandre Julliard f55db7882d server: Add link_name and unlink_name object operations.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-04 21:07:19 +09:00
Alexandre Julliard 37503be654 server: Fix checks for a valid directory in object attributes.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-01 14:57:37 +09:00
Alexandre Julliard 008f14f03f server: Directly return a structure in get_req_unicode_str().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-29 21:25:12 +09:00
Alexandre Julliard ed268bbf91 server: Use a common helper function to implement open object calls.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-29 21:25:12 +09:00
Alexandre Julliard b3064d748b server: Implement NtOpenJobObject.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-29 16:38:53 +09:00
Alexandre Julliard 9504e2addf server: Add a helper function to validate and return object attributes.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-16 00:05:57 +09:00
Alexandre Julliard 7350682aa6 server: Store the attributes in the object_attributes structure.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-16 00:05:57 +09:00
Sebastian Lackner 1980834c7d ntdll: ProcessDebugFlags should return debug_children flag instead of !debugger_present.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-21 18:14:43 +01:00
Sebastian Lackner c948e84189 server: Properly inherit debug_children flag when creating new process. 2015-08-24 18:41:34 +09:00
Dmitry Timoshkov 1d2241eca3 server: For querying process information demand PROCESS_QUERY_LIMITED_INFORMATION access. 2015-08-21 14:35:01 +09:00
Dmitry Timoshkov c19091272d server: Add implicit PROCESS_[QUERY|SET]_LIMITED_INFORMATION access. 2015-08-21 14:34:55 +09:00
Sebastian Lackner 905bf79337 server: Store correct entry point for first thread. 2015-07-30 11:37:15 +02:00
Andrew Cook 453458f294 server: Implement JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE. 2015-07-17 14:28:59 +09:00
Sebastian Lackner a7247df6ca server: Implement waiting for job objects. 2015-04-07 23:16:20 +09:00
Andrew Cook 1d359a5827 server: Implement TerminateJobObject. 2015-04-07 23:15:47 +09:00
Andrew Cook 47ffeaee74 server: Implement io completion messages for job objects. 2015-04-03 00:33:29 +09:00
Andrew Cook 0dbe5adc21 server: Implement job inheritance. 2015-04-03 00:33:29 +09:00
Andrew Cook ecd41d1de7 server: Implement job limit flags. 2015-04-03 00:33:29 +09:00
Andrew Cook 3affd63b34 server: Implement IsProcessInJob. 2015-04-01 22:34:19 +09:00
Andrew Cook 98132f0364 server: Implement AssignProcessToJobObject. 2015-04-01 22:34:18 +09:00
Andrew Cook 0e78b0248d server: Implement CreateJobObject. 2015-04-01 17:05:44 +09:00
Sebastian Lackner b985b677e8 server: Fix several fd leaks on error in new_process wineserver call. 2014-11-20 22:33:39 +09:00
Piotr Caban 4fca169301 server: Don't debug children when DEBUG_PROCESS and DEBUG_ONLY_THIS_PROCESS flags are passed to CreateProcess. 2014-04-09 13:15:58 +02:00
Dmitry Timoshkov a0b08adbe4 server: Add PROCESS_QUERY_LIMITED_INFORMATION to GENERIC_EXECUTE access mapping and appropriately change PROCESS_ALL_ACCESS. 2014-02-06 17:08:32 +01:00
Dmitry Timoshkov 53847fd6a1 server: Fix generic access mapping for a process. 2014-02-06 17:08:31 +01:00
Austin English d506e59dab server: Set process start time a bit later. 2013-12-20 11:13:10 +01:00
Alexandre Julliard 1e78c99388 kernel32: Validate the architecture of newly created processes on the server side. 2013-11-22 12:32:48 +01:00
Alexandre Julliard 39644bb309 server: Pass a wait queue entry to the signaled/satisfied object functions. 2013-08-27 23:48:36 +02:00
Dmitry Timoshkov df6c2a8418 server: Mark the process as disconnected from desktop/winstation before closing its handles. 2013-06-03 21:11:38 +02:00
Dmitry Timoshkov bac0387d29 server: Fail to set process affinity mask if the process is terminating. 2013-05-07 11:25:54 +02:00
Dmitry Timoshkov af3d73b035 server: Add a process flag indicating whether the process is terminating, use it to block thread creation in a being terminated process. 2013-05-07 11:25:49 +02:00
Dmitry Timoshkov b92c82c942 server: Add support for NtTerminateProcess(0). 2013-04-15 16:45:33 +02:00
Piotr Caban 23191a4355 server: Don't debug children when debugger is attached with DebugActiveProcess function. 2013-04-05 20:39:07 +02:00
Henri Verbeet c6fcc0255c user32: Add rawinput keyboard support. 2012-09-12 12:47:13 +02:00
Henri Verbeet faaf3d388e user32: Add rawinput mouse support. 2012-09-11 18:06:34 +02:00
Henri Verbeet 5befb959dd user32: Implement RegisterRawInputDevices(). 2012-09-10 11:44:19 +02:00
Hans Leidekker d1b6cf9379 server: Include the Unix pid in the snapshot_next_process reply. 2012-04-16 17:49:32 +02:00
Bernhard Loos e7ec00d22c server: If a debugger is attached to a process, child processes shouldn't get debugged. 2011-10-10 13:41:24 +02:00
Alexandre Julliard a0c0878805 server: Allow creating a process without any parent or startup info. 2011-06-16 22:45:45 +02:00
Alexandre Julliard 5dc9c73c31 server: Check for the need to suspend a thread again once it leaves an exception or suspend block. 2011-05-06 12:49:57 +02:00
Alexandre Julliard 900352bc6b server: Store a mapping instead of a file for process dlls. 2011-04-18 14:45:32 +02:00
Alexandre Julliard 4fd8bab99e server: Inherit the process affinity from the parent process. 2011-04-14 19:57:52 +02:00
Alexandre Julliard 350c0caba0 server: Always free the process handle table even if the process didn't start. 2010-08-24 12:10:51 +02:00
Henri Verbeet f0a5045254 ntdll: Improve support for the ProcessDebugPort info class in NtQueryInformationProcess(). 2010-03-15 15:56:42 +01:00
Alexandre Julliard 349eba9e09 server: Make terminate_process more robust against recursive calls for the same process. 2010-02-02 11:47:06 +01:00
Alexandre Julliard 7d4e28480d server: Any thread can set the idle event, don't treat the first one differently. 2009-12-16 18:06:32 +01:00
Alexandre Julliard d1dc48d8dc server: Don't set the idle event when a queue is destroyed, instead return success in WaitForInputIdle on process exit. 2009-12-16 18:00:34 +01:00
Alexandre Julliard e4faa12900 server: Make sure that last error doesn't get set during thread cleanup. 2009-12-01 15:10:23 +01:00
Alexandre Julliard 538b24747c server: Free client-side user handles at process exit. 2009-10-15 17:56:04 +02:00
Juan Lang 24036fe13a server: Setting a process's affinity sets all of its threads' affinities too. 2009-09-30 14:34:32 +02:00
Alexandre Julliard da8acbc47d server: Define an architecture-independent structure for process startup info. 2009-08-21 20:00:12 +02:00
Alexandre Julliard 6056e8a52b server: Return the process CPU in the get_process_info request. 2009-07-07 11:37:47 +02:00
Alexandre Julliard fa8643805b server: Make TEB and PEB client_ptr_t instead of void pointers. 2008-12-31 15:09:59 +01:00
Alexandre Julliard c6c335d70e server: Make thread entry points client_ptr_t instead of void pointers. 2008-12-31 15:09:59 +01:00
Alexandre Julliard 2cf868c0be server: Move ldt_copy to the init_process_done request and make it a client_ptr_t. 2008-12-31 15:09:59 +01:00
Alexandre Julliard 1d2d0d5622 server: Send the version with the initial fd so that it can be checked before sending the first request. 2008-12-31 15:09:59 +01:00
Alexandre Julliard 8e9c156e14 server: Make the address argument for read/write_process_memory a client_ptr_t. 2008-12-30 14:11:58 +01:00
Alexandre Julliard cb2788efaf server: Add a module_handle_t type to represent client-side module handles. 2008-12-29 16:41:44 +01:00
Alexandre Julliard db6e45488d server: Get rid of the support for module snapshots, it is no longer needed. 2008-12-09 11:49:37 +01:00
Alexandre Julliard 0d3d456bd0 server: Make object handles ints instead of pointers. 2008-12-08 16:04:20 +01:00
Alexandre Julliard 24ec4a6ed7 server: Move the process pipe hangup handling into kill_process.
This ensures that it's also done correctly when a read from the pipe
returns EOF.
2008-06-20 20:42:51 +02:00
Alexandre Julliard 3bf12b9aca server: Don't force the process affinity to 1, leave it up to the client. 2008-01-17 13:40:03 +01:00
Marcus Meissner 3bf54c2950 server: Enumerate process in reverse. 2008-01-14 16:24:55 +01:00
Alexandre Julliard 2f1e73cb35 server: Wait for the expiration of all the process SIGKILL timers before exiting the server. 2008-01-07 17:19:05 +01:00
Alexandre Julliard af268c6211 server: Redesign the server shutdown processing.
System processes are now killed only after the server persistence
delay has expired. New processes are not allowed to start during
shutdown.
2008-01-03 11:40:03 +01:00
Alexandre Julliard 11750af329 server: Don't give out full access to the system process event. 2007-12-20 16:43:31 +01:00
Alexandre Julliard ffbeae78f7 server: Don't count system processes as users of a desktop. 2007-12-20 16:43:14 +01:00
Alexandre Julliard 8382eb01b2 server: Return correct object types in the get_directory_entry request. 2007-12-05 18:16:42 +01:00
Rob Shearman bf2a35b78d server: Change the get_dll_info server request to allow retrieving the image file name of a process.
Implement NtQueryInformationProcess(ProcessImageFileName).
2007-11-20 14:29:09 +01:00
Rob Shearman dd9e392796 server: Use the security descriptor passed in when creating events. 2007-10-25 12:47:22 +02:00
Rob Shearman c1707d8938 server: Add get_sd and set_sd object operations to allow the security descriptor to be stored somewhere other than server memory, such as on disk. 2007-10-04 12:30:52 +02:00
Alexandre Julliard 156b205eb5 server: Add support for system processes, that can be signaled to exit when all non-system processes are done. 2007-06-06 20:33:13 +02:00
Rob Shearman ec86243521 server: When starting a new process, use the token from the calling process, if one exists. 2007-05-30 11:48:25 +02:00
Alexandre Julliard 627ca4079e server: Stop exporting the console_input structure. Get rid of console.h. 2007-05-11 12:46:32 +02:00
Alexandre Julliard aaf477f292 server: Change the timeout handling to use NT-style 64-bit timeouts everywhere. 2007-04-17 20:08:59 +02:00
Alexandre Julliard 635714397f server: Add infrastructure for ioctl server request. 2007-04-16 14:45:03 +02:00
Alexandre Julliard 3f0575943e server: Don't bother with default entry points for objects that don't even return an fd. 2007-04-12 20:21:53 +02:00
Alexandre Julliard 7a9363a4d4 server: Rename the get_file_info function to get_fd_type and get rid of the flags. 2007-04-10 22:26:23 +02:00
Alexandre Julliard f85437c57f server: Store the opening options in the file descriptor instead of in the individual objects.
Allows moving the FD_FLAG_OVERLAPPED support to the generic
get_handle_fd request handling.
2007-04-10 22:25:07 +02:00
Alexandre Julliard 72bff2e445 server: Add support for restarting an async I/O when the client side couldn't finish it right away. 2007-04-10 17:07:27 +02:00
Alexandre Julliard 7e71c1ddee server: Add an open_file() function to the object operations. 2007-03-22 11:44:29 +01:00
Alexandre Julliard 5bd513640b ntdll: Moved the check for removable file in load_dll to the server. 2007-01-12 14:42:43 +01:00
Alexandre Julliard cd1c7fc056 server: Add hooks to support process tracing mechanisms other than ptrace. 2006-12-29 16:56:11 +01:00
Alexandre Julliard d6f8284c2f server: Fix list corruption caused by previous change. 2006-11-13 12:53:09 +01:00
Alexandre Julliard 110a6fe5b6 server: Properly handle kill_thread recursion when killing a process.
Spotted by Mike McCormack.
2006-11-10 12:18:54 +01:00
Michael Stefaniuc 5cecceccb2 server: Remove redundant NULL check before free() (found by Smatch). 2006-10-10 12:56:16 +02:00
Alexandre Julliard 81977b773b server: Kill the process without SIGTERM when the fd socket is closed. 2006-09-21 11:14:45 +02:00
Alexandre Julliard 498b781e23 server: Store the actual process count in snapshots.
We can't rely on running_processes for that, since it now also counts
processes waiting for SIGKILL and those aren't included in snapshots.
2006-08-15 20:31:54 +02:00
Alexandre Julliard 68e850e602 server: Send a SIGKILL to processes that don't terminate properly. 2006-08-14 20:19:42 +02:00
Alexandre Julliard 753c8706f5 server: Only call gettimeofday once per poll loop. 2006-08-10 16:42:09 +02:00
Alexandre Julliard 3095a48d6f server: Convert thread creation/exit times to the abs_time_t type. 2006-07-26 14:49:55 +02:00
Alexandre Julliard ce40ef18df server: Rename the wait_input_idle request to better reflect what it does.
Also get rid of the unused timeout field.
2006-07-26 11:48:25 +02:00
Alexandre Julliard 0f273c17ff server: Added data_size_t type to represent sizes in the server protocol.
Make it an unsigned int to save some space on Win64, if we need to
transfer more than 4Gb over the server pipe something is seriously
wrong.
2006-07-26 11:11:03 +02:00
Thomas Kho 4ff4ba394e server: Add new threads to end of thread_list. 2006-07-25 11:41:15 +02:00
Stefan Siebert 026dd2d88a ntdll: Implementation of process CreationTime and ExitTime. 2006-07-21 13:27:16 +02:00
Alexandre Julliard c316f0e47f server: Simplify process creation.
Pass the socket for the new process from the parent through the
environment.
Perform initialisations during the new_process request.
2006-07-19 14:00:10 +02:00
Alexandre Julliard 5558652ea3 server: Don't report a fatal protocol error for things that we can recover from. 2006-06-08 10:26:02 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Alexandre Julliard 17de829096 server: Use the standard suspend mechanism to simulate a breakpoint
in an active process, instead of sending a SIGTRAP.
2006-04-19 19:45:39 +02:00
Alexandre Julliard cb70931f67 server: Moved read/write_process_memory and get_selector_entry to ptrace.c. 2006-04-07 19:52:12 +02:00
Alexandre Julliard 0b492c708f server: Hide assumptions about alignment inside the read_process_memory function. 2006-04-07 19:43:44 +02:00
Alexandre Julliard 959bbf8b75 server: Get rid of alignment requirements in write_process_memory request.
All the alignment handling is now done in the write_process_memory
function inside the server.
2006-04-07 18:41:58 +02:00
Alexandre Julliard 90af5a0d17 server: Connect to the window station and desktop specified by startup info.
If window station and desktop aren't inherited from the parent, don't
connect to them from the server, but from the USER init code where we
can get the proper values from the startup info structure.
2006-03-27 12:57:17 +02:00
Alexandre Julliard 0a3646292a server: Fixed process exit code on FreeBSD. 2006-03-27 12:14:24 +02:00
Ken Thomases 1c788eada2 server: Fix memory leak in read_process_memory handler. 2006-03-24 12:54:19 +01:00
Alexandre Julliard f978f615d8 server: Support for closing the desktop window.
If a thread is owning the desktop window, when all other users of the
desktop have exited, signal the owner to close the desktop (with a 1
second delay).
2006-03-06 21:02:24 +01:00
Alexandre Julliard e27358ea5c server: Remove no longer needed fields in the init_process_done request. 2006-02-21 20:08:19 +01:00
Alexandre Julliard 492661079c server: Avoid hang on process startup.
Fixed the startup_info signaled state to avoid blocking the parent
process when the child crashes on startup.
2006-02-21 19:30:17 +01:00
Alexandre Julliard e6374cbea7 server: Store the process exe module in the standard dll list. 2006-02-16 12:13:01 +01:00
Alexandre Julliard e0330145d8 server: Remove the no longer needed exe_file parameter in the
init_process_done request.
2006-02-08 15:25:12 +01:00
Alexandre Julliard 2b0033d5ad server: Allow the main exe to be registered as a normal dll before
init_process_done is called.
2006-02-08 15:07:16 +01:00
Alexandre Julliard 2a36dd239c server: Remove no longer used create_flags from get_startup_info request. 2006-02-05 12:33:24 +01:00
Alexandre Julliard a510a7e117 server: Added access rights mapping to file objects. 2005-12-12 16:46:17 +01:00
Alexandre Julliard 46d1b3e8da server: Added access rights mapping to process and thread objects. 2005-12-12 15:03:07 +01:00
Alexandre Julliard 28beba31d6 server: Added infrastructure for access rights mapping. 2005-12-12 14:57:40 +01:00
Alexandre Julliard 24560e70bb server: Make alloc_handle use attributes instead of inherit flag. 2005-12-09 13:58:25 +01:00
Alexandre Julliard f2d7dd645e server: Use attributes instead of inherit flag in process and thread requests. 2005-12-09 12:13:11 +01:00
Vitaliy Margolen f676bc8d85 Move event and mutex objects into directory name space. 2005-12-02 15:55:48 +01:00
Ge van Geldorp 1a1583a364 Match PSDK STATUS_* definitions. 2005-11-28 17:32:54 +01:00
Vitaliy Margolen baffcb95d3 Add name_lookup function in object_ops. 2005-11-22 14:55:42 +00:00
Alexandre Julliard ead9b062e3 Added a struct unicode_str to encapsulate object names. 2005-11-18 16:31:18 +00:00
Vitaliy Margolen 3585f2fa77 Pass object attributes to create_named_object & find_object. 2005-10-29 12:38:23 +00:00
Alexandre Julliard 2790923722 Removed incorrect process queue check in wait_input_idle. 2005-10-12 21:10:52 +00:00
Eric Pouech b09582a890 Implemented kernel32 process affinity handling on top on ntdll. 2005-09-27 10:52:10 +00:00
Eric Pouech b3badc7dd3 - rewrite kernel32:{Set|Get}PriorityClass on top of ntdll equivalent
- priority for process in wineserver is now the NTDLL form (no longer
  the kernel32 one)
2005-09-06 10:25:11 +00:00
Alexandre Julliard 9ad5628639 Moved the server start time to the init_thread request and got rid of
the init_process request (based on a patch by Felix Nawothnig).
2005-07-14 10:32:46 +00:00
Alexandre Julliard 11ad6a0ac4 Return the startup info size in the init_thread request, and allocate
the process parameters structure in ntdll instead of kernel.
2005-07-13 19:43:35 +00:00
Alexandre Julliard 0424f38169 Already initialize the process in the first init_thread request
instead of waiting for the init_process request.
2005-07-13 12:12:43 +00:00
Alexandre Julliard 01caa5e645 Moved the fields that depends on startup info from the init_process
request to get_startup_info.
2005-07-12 20:27:09 +00:00
Alexandre Julliard 36b85d02f6 Clear the process handle table before releasing it to avoid potential
problems with destructors trying to access handles.
2005-06-29 19:29:15 +00:00
Mike McCormack 390bc5f52f Don't include winbase.h when it's not necessary. 2005-06-21 09:46:15 +00:00
Alexandre Julliard 5f22e7caf6 Remove the process locks in process_killed, not process_destroy. 2005-06-14 19:23:56 +00:00
Mike McCormack cdcb203691 Call remove_process_locks when a process ends, fix declarations. 2005-06-14 11:40:40 +00:00
Alexandre Julliard b9b1ea9c9f Added a close_handle method to the object operations, and use it to
implement registry notifications and the strange behavior of
CloseHandle on winstation/desktop handles.
2005-06-09 15:39:52 +00:00