ReactOS
0.4.16-dev-533-gc7d1aa3
ntobjenum.h
Go to the documentation of this file.
1
/*
2
* PROJECT: NT Object Namespace shell extension
3
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
4
* PURPOSE: NT Object Namespace enumeration header
5
* COPYRIGHT: Copyright 2004 Martin Fuchs <martin-fuchs@gmx.net>
6
*/
7
8
#pragma once
9
10
11
// All the possible values are defined here because I want the type field to be
12
// "persistable" and not change if more types are added in the future.
13
enum
OBJECT_TYPE
{
14
DIRECTORY_OBJECT
,
SYMBOLICLINK_OBJECT
,
15
MUTANT_OBJECT
,
SECTION_OBJECT
,
EVENT_OBJECT
,
SEMAPHORE_OBJECT
,
16
TIMER_OBJECT
,
KEY_OBJECT
,
EVENTPAIR_OBJECT
,
IOCOMPLETION_OBJECT
,
17
DEVICE_OBJECT
,
FILE_OBJECT
,
CONTROLLER_OBJECT
,
PROFILE_OBJECT
,
18
TYPE_OBJECT
,
DESKTOP_OBJECT
,
WINDOWSTATION_OBJECT
,
DRIVER_OBJECT
,
19
TOKEN_OBJECT
,
PROCESS_OBJECT
,
THREAD_OBJECT
,
ADAPTER_OBJECT
,
PORT_OBJECT
,
20
21
UNKNOWN_OBJECT_TYPE
= -1
22
};
23
extern
const
LPCWSTR
ObjectTypeNames
[];
24
25
#define NT_OBJECT_PIDL_MAGIC (USHORT)0x9A03
26
#define REGISTRY_PIDL_MAGIC (USHORT)0x5364
27
28
#include <pshpack1.h>
29
30
// NT OBJECT browser
31
struct
NtPidlEntry
32
{
33
USHORT
cb
;
34
USHORT
magic
;
// 0x9A03 ~~~ "NTOB"
35
36
// If this is -1, there will be a NtPidlTypeData following this, and before any other extensions
37
OBJECT_TYPE
objectType
;
38
39
USHORT
entryNameLength
;
40
WCHAR
entryName
[
ANYSIZE_ARRAY
];
41
};
42
43
struct
NtPidlTypeData
44
{
45
USHORT
typeNameLength
;
46
WCHAR
typeName
[
ANYSIZE_ARRAY
];
47
};
48
49
// REGISTRY browser
50
enum
REG_ENTRY_TYPE
51
{
52
REG_ENTRY_ROOT
,
53
REG_ENTRY_KEY
,
54
REG_ENTRY_VALUE
,
55
REG_ENTRY_VALUE_WITH_CONTENT
56
// any more?
57
};
58
extern
const
LPCWSTR
RegistryTypeNames
[];
59
60
struct
RegPidlEntry
61
{
62
USHORT
cb
;
63
USHORT
magic
;
// 0x5364 ~~~ "REGK"
64
65
REG_ENTRY_TYPE
entryType
;
66
67
USHORT
entryNameLength
;
68
69
union
{
70
struct
{
71
// For Value entries, this contains the value contents, if it's reasonably small.
72
// For Key entries, this contains the custom class name
73
DWORD
contentType
;
74
USHORT
contentsLength
;
75
};
76
77
HKEY
rootKey
;
78
};
79
80
WCHAR
entryName
[
ANYSIZE_ARRAY
];
81
82
};
83
84
85
#include <poppack.h>
86
87
HRESULT
ReadRegistryValue
(
HKEY
root
,
PCWSTR
path
,
PCWSTR
valueName,
PVOID
* valueData,
PDWORD
valueLength);
88
89
HRESULT
GetEnumRegistryRoot
(
IEnumIDList
** ppil);
90
HRESULT
GetEnumRegistryKey
(
LPCWSTR
path
,
HKEY
root
,
IEnumIDList
** ppil);
91
HRESULT
GetEnumNTDirectory
(
LPCWSTR
path
,
IEnumIDList
** ppil);
92
93
HRESULT
GetNTObjectSymbolicLinkTarget
(
LPCWSTR
path
,
LPCWSTR
entryName,
PUNICODE_STRING
LinkTarget
);
DWORD
unsigned long DWORD
Definition:
ntddk_ex.h:95
HRESULT
Definition:
mshtmhst.idl:286
IEnumIDList
Definition:
shobjidl.idl:100
void
Definition:
nsiface.idl:2307
ReadRegistryValue
HRESULT ReadRegistryValue(HKEY root, PCWSTR path, PCWSTR valueName, PVOID *valueData, PDWORD valueLength)
Definition:
ntobjenum.cpp:98
OBJECT_TYPE
OBJECT_TYPE
Definition:
ntobjenum.h:13
ADAPTER_OBJECT
@ ADAPTER_OBJECT
Definition:
ntobjenum.h:19
KEY_OBJECT
@ KEY_OBJECT
Definition:
ntobjenum.h:16
TOKEN_OBJECT
@ TOKEN_OBJECT
Definition:
ntobjenum.h:19
TYPE_OBJECT
@ TYPE_OBJECT
Definition:
ntobjenum.h:18
CONTROLLER_OBJECT
@ CONTROLLER_OBJECT
Definition:
ntobjenum.h:17
MUTANT_OBJECT
@ MUTANT_OBJECT
Definition:
ntobjenum.h:15
WINDOWSTATION_OBJECT
@ WINDOWSTATION_OBJECT
Definition:
ntobjenum.h:18
EVENT_OBJECT
@ EVENT_OBJECT
Definition:
ntobjenum.h:15
SYMBOLICLINK_OBJECT
@ SYMBOLICLINK_OBJECT
Definition:
ntobjenum.h:14
FILE_OBJECT
@ FILE_OBJECT
Definition:
ntobjenum.h:17
DESKTOP_OBJECT
@ DESKTOP_OBJECT
Definition:
ntobjenum.h:18
IOCOMPLETION_OBJECT
@ IOCOMPLETION_OBJECT
Definition:
ntobjenum.h:16
SECTION_OBJECT
@ SECTION_OBJECT
Definition:
ntobjenum.h:15
DIRECTORY_OBJECT
@ DIRECTORY_OBJECT
Definition:
ntobjenum.h:14
SEMAPHORE_OBJECT
@ SEMAPHORE_OBJECT
Definition:
ntobjenum.h:15
DRIVER_OBJECT
@ DRIVER_OBJECT
Definition:
ntobjenum.h:18
DEVICE_OBJECT
@ DEVICE_OBJECT
Definition:
ntobjenum.h:17
PROCESS_OBJECT
@ PROCESS_OBJECT
Definition:
ntobjenum.h:19
PORT_OBJECT
@ PORT_OBJECT
Definition:
ntobjenum.h:19
EVENTPAIR_OBJECT
@ EVENTPAIR_OBJECT
Definition:
ntobjenum.h:16
UNKNOWN_OBJECT_TYPE
@ UNKNOWN_OBJECT_TYPE
Definition:
ntobjenum.h:21
PROFILE_OBJECT
@ PROFILE_OBJECT
Definition:
ntobjenum.h:17
THREAD_OBJECT
@ THREAD_OBJECT
Definition:
ntobjenum.h:19
TIMER_OBJECT
@ TIMER_OBJECT
Definition:
ntobjenum.h:16
ObjectTypeNames
const LPCWSTR ObjectTypeNames[]
Definition:
ntobjenum.cpp:25
GetEnumRegistryKey
HRESULT GetEnumRegistryKey(LPCWSTR path, HKEY root, IEnumIDList **ppil)
Definition:
ntobjenum.cpp:732
GetEnumNTDirectory
HRESULT GetEnumNTDirectory(LPCWSTR path, IEnumIDList **ppil)
Definition:
ntobjenum.cpp:737
REG_ENTRY_TYPE
REG_ENTRY_TYPE
Definition:
ntobjenum.h:51
REG_ENTRY_KEY
@ REG_ENTRY_KEY
Definition:
ntobjenum.h:53
REG_ENTRY_VALUE_WITH_CONTENT
@ REG_ENTRY_VALUE_WITH_CONTENT
Definition:
ntobjenum.h:55
REG_ENTRY_VALUE
@ REG_ENTRY_VALUE
Definition:
ntobjenum.h:54
REG_ENTRY_ROOT
@ REG_ENTRY_ROOT
Definition:
ntobjenum.h:52
GetNTObjectSymbolicLinkTarget
HRESULT GetNTObjectSymbolicLinkTarget(LPCWSTR path, LPCWSTR entryName, PUNICODE_STRING LinkTarget)
Definition:
ntobjenum.cpp:151
RegistryTypeNames
const LPCWSTR RegistryTypeNames[]
Definition:
ntobjenum.cpp:35
GetEnumRegistryRoot
HRESULT GetEnumRegistryRoot(IEnumIDList **ppil)
Definition:
ntobjenum.cpp:727
PDWORD
DWORD * PDWORD
Definition:
pedump.c:68
USHORT
unsigned short USHORT
Definition:
pedump.c:61
NtPidlEntry
Definition:
ntobjenum.h:32
NtPidlEntry::objectType
OBJECT_TYPE objectType
Definition:
ntobjenum.h:37
NtPidlEntry::cb
USHORT cb
Definition:
ntobjenum.h:33
NtPidlEntry::entryName
WCHAR entryName[ANYSIZE_ARRAY]
Definition:
ntobjenum.h:40
NtPidlEntry::entryNameLength
USHORT entryNameLength
Definition:
ntobjenum.h:39
NtPidlEntry::magic
USHORT magic
Definition:
ntobjenum.h:34
NtPidlTypeData
Definition:
ntobjenum.h:44
NtPidlTypeData::typeName
WCHAR typeName[ANYSIZE_ARRAY]
Definition:
ntobjenum.h:46
NtPidlTypeData::typeNameLength
USHORT typeNameLength
Definition:
ntobjenum.h:45
RegPidlEntry
Definition:
ntobjenum.h:61
RegPidlEntry::cb
USHORT cb
Definition:
ntobjenum.h:62
RegPidlEntry::entryNameLength
USHORT entryNameLength
Definition:
ntobjenum.h:67
RegPidlEntry::contentsLength
USHORT contentsLength
Definition:
ntobjenum.h:74
RegPidlEntry::rootKey
HKEY rootKey
Definition:
ntobjenum.h:77
RegPidlEntry::entryName
WCHAR entryName[ANYSIZE_ARRAY]
Definition:
ntobjenum.h:80
RegPidlEntry::magic
USHORT magic
Definition:
ntobjenum.h:63
RegPidlEntry::contentType
DWORD contentType
Definition:
ntobjenum.h:73
RegPidlEntry::entryType
REG_ENTRY_TYPE entryType
Definition:
ntobjenum.h:65
_UNICODE_STRING
Definition:
env_spec_w32.h:368
_root
Definition:
btrfs_drv.h:450
path
Definition:
wbemprox_private.h:188
PCWSTR
const uint16_t * PCWSTR
Definition:
typedefs.h:57
ANYSIZE_ARRAY
#define ANYSIZE_ARRAY
Definition:
typedefs.h:46
WCHAR
__wchar_t WCHAR
Definition:
xmlstorage.h:180
LPCWSTR
const WCHAR * LPCWSTR
Definition:
xmlstorage.h:185
LinkTarget
_Inout_ PUNICODE_STRING LinkTarget
Definition:
zwfuncs.h:292
dll
shellext
ntobjshex
ntobjenum.h
Generated on Sun Jan 19 2025 06:03:39 for ReactOS by
1.9.6