Open directory where we will Open/Create new named objects.

Vitaliy Margolen wine-patch at kievinfo.com
Wed Nov 30 17:14:27 CST 2005


We need this handle in order to move named objects into new directory
object on wineserver side. We don't want to open and close it for each
named object op. Same we don't really want to alter the object's name.

ChangeLog:
Open directory where we will Open/Create new named objects.

 dlls/kernel/kernel_main.c    |   12 ++++++++++++
 dlls/kernel/kernel_private.h |    3 +++
 2 files changed, 15 insertions(+), 0 deletions(-)
-------------- next part --------------
352554b9c2bd6a97470ccf92f08e3ba96d127a1e
diff --git a/dlls/kernel/kernel_main.c b/dlls/kernel/kernel_main.c
index a9b76f1..cd4eaea 100644
--- a/dlls/kernel/kernel_main.c
+++ b/dlls/kernel/kernel_main.c
@@ -39,6 +39,7 @@
 #include "wincon.h"
 #include "winternl.h"
 #include "wownt32.h"
+#include "ddk/wdm.h"
 
 #include "wine/winbase16.h"
 #include "wine/library.h"
@@ -63,6 +64,9 @@ static CRITICAL_SECTION ldt_section = { 
 
 static DWORD server_start_time;
 
+/* Directory handle for named objects */
+HANDLE global_BaseNamedObjects;
+
 /***********************************************************************
  *           locking for LDT routines
  */
@@ -109,6 +113,13 @@ static BOOL process_attach(void)
 {
     SYSTEM_INFO si;
     SYSTEM_TIMEOFDAY_INFORMATION sti;
+    UNICODE_STRING str;
+    OBJECT_ATTRIBUTES attr;
+    static const WCHAR basenameW[] = {'\\','B','a','s','e','N','a','m','e','d','O','b','j','e','c','t','s',0};
+
+    RtlInitUnicodeString(&str, basenameW);
+    InitializeObjectAttributes(&attr, &str, 0, 0, NULL);
+    NtOpenDirectoryObject(&global_BaseNamedObjects, DIRECTORY_CREATE_OBJECT, &attr);
 
     NtQuerySystemInformation( SystemTimeOfDayInformation, &sti, sizeof(sti), NULL );
     RtlTimeToSecondsSince1970( &sti.liKeBootTime, &server_start_time );
@@ -183,6 +194,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DW
         break;
     case DLL_PROCESS_DETACH:
         WriteOutProfiles16();
+        NtClose(global_BaseNamedObjects);
         break;
     }
     return TRUE;
diff --git a/dlls/kernel/kernel_private.h b/dlls/kernel/kernel_private.h
index 73c3f22..526cc45 100644
--- a/dlls/kernel/kernel_private.h
+++ b/dlls/kernel/kernel_private.h
@@ -71,6 +71,9 @@ extern HANDLE dos_handles[DOS_TABLE_SIZE
 extern const WCHAR *DIR_Windows;
 extern const WCHAR *DIR_System;
 
+/* Directory handle for named objects */
+extern HANDLE global_BaseNamedObjects;
+
 extern void PTHREAD_Init(void);
 
 extern VOID SYSLEVEL_CheckNotLevel( INT level );


More information about the wine-patches mailing list