[TASKMGR]
[reactos.git] / base / system / smss / initobdir.c
1 /*
2 * PROJECT: ReactOS Session Manager
3 * LICENSE: GPL v2 or later - See COPYING in the top level directory
4 * FILE: base/system/smss/initobdir.c
5 * PURPOSE: Object directories.
6 * PROGRAMMERS: ReactOS Development Team
7 */
8
9 /* INCLUDES ******************************************************************/
10 #include "smss.h"
11
12 #define NDEBUG
13 #include <debug.h>
14
15 static NTSTATUS NTAPI
16 SmpObjectDirectoryQueryRoutine(PWSTR ValueName,
17 ULONG ValueType,
18 PVOID ValueData,
19 ULONG ValueLength,
20 PVOID Context,
21 PVOID EntryContext)
22 {
23 OBJECT_ATTRIBUTES ObjectAttributes;
24 UNICODE_STRING UnicodeString;
25 HANDLE WindowsDirectory;
26 NTSTATUS Status = STATUS_SUCCESS;
27
28 DPRINT("ValueName '%S' Type %lu Length %lu\n", ValueName, ValueType, ValueLength);
29 DPRINT("ValueData '%S'\n", (PWSTR)ValueData);
30 if (ValueType != REG_SZ)
31 {
32 return(STATUS_SUCCESS);
33 }
34
35 RtlInitUnicodeString(&UnicodeString,
36 (PWSTR)ValueData);
37
38 InitializeObjectAttributes(&ObjectAttributes,
39 &UnicodeString,
40 0,
41 NULL,
42 NULL);
43
44 Status = ZwCreateDirectoryObject(&WindowsDirectory,
45 0,
46 &ObjectAttributes);
47
48 return(Status);
49 }
50
51
52 NTSTATUS
53 SmCreateObjectDirectories(VOID)
54 {
55 RTL_QUERY_REGISTRY_TABLE QueryTable[2];
56 NTSTATUS Status;
57
58 RtlZeroMemory(&QueryTable,
59 sizeof(QueryTable));
60
61 QueryTable[0].Name = L"ObjectDirectories";
62 QueryTable[0].QueryRoutine = SmpObjectDirectoryQueryRoutine;
63
64 Status = RtlQueryRegistryValues(RTL_REGISTRY_CONTROL,
65 SM_REGISTRY_ROOT_NAME,
66 QueryTable,
67 NULL,
68 NULL);
69
70 return(Status);
71 }
72
73 /* EOF */