ReactOS  0.4.14-dev-376-gaedba84
ob.h
Go to the documentation of this file.
1 /*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/include/internal/ob.h
5 * PURPOSE: Internal header for the Object Manager
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
7 */
8 
9 //
10 // Define this if you want debugging support
11 //
12 #define _OB_DEBUG_ 0x00
13 
14 //
15 // These define the Debug Masks Supported
16 //
17 #define OB_HANDLE_DEBUG 0x01
18 #define OB_NAMESPACE_DEBUG 0x02
19 #define OB_SECURITY_DEBUG 0x04
20 #define OB_REFERENCE_DEBUG 0x08
21 #define OB_CALLBACK_DEBUG 0x10
22 
23 //
24 // Debug/Tracing support
25 //
26 #if _OB_DEBUG_
27 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
28 #define OBTRACE DbgPrintEx
29 #else
30 #define OBTRACE(x, ...) \
31  if (x & ObpTraceLevel) DbgPrint(__VA_ARGS__)
32 #endif
33 #else
34 #define OBTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
35 #endif
36 
37 //
38 // Mask to detect GENERIC_XXX access masks being used
39 //
40 #define GENERIC_ACCESS \
41  (GENERIC_READ | \
42  GENERIC_WRITE | \
43  GENERIC_EXECUTE | \
44  GENERIC_ALL)
45 
46 //
47 // Handle Bit Flags
48 //
49 #define OBJ_PROTECT_CLOSE 0x01
50 //#define OBJ_INHERIT 0x02
51 #define OBJ_AUDIT_OBJECT_CLOSE 0x04
52 #define OBJ_HANDLE_ATTRIBUTES (OBJ_PROTECT_CLOSE |\
53  OBJ_INHERIT | \
54  OBJ_AUDIT_OBJECT_CLOSE)
55 
56 //
57 // Identifies a Kernel Handle
58 //
59 #ifdef _WIN64
60 #define KERNEL_HANDLE_FLAG 0xFFFFFFFF80000000ULL
61 #else
62 #define KERNEL_HANDLE_FLAG 0x80000000
63 #endif
64 #define ObpIsKernelHandle(Handle, ProcessorMode) \
65  ((((ULONG_PTR)(Handle) & KERNEL_HANDLE_FLAG) == KERNEL_HANDLE_FLAG) && \
66  ((ProcessorMode) == KernelMode) && \
67  ((Handle) != NtCurrentProcess()) && \
68  ((Handle) != NtCurrentThread()))
69 
70 //
71 // Converts to and from a Kernel Handle to a normal handle
72 //
73 #define ObKernelHandleToHandle(Handle) \
74  (HANDLE)((ULONG_PTR)(Handle) & ~KERNEL_HANDLE_FLAG)
75 #define ObMarkHandleAsKernelHandle(Handle) \
76  (HANDLE)((ULONG_PTR)(Handle) | KERNEL_HANDLE_FLAG)
77 
78 //
79 // Converts from an EXHANDLE object to a POBJECT_HEADER
80 //
81 #define ObpGetHandleObject(x) \
82  ((POBJECT_HEADER)((ULONG_PTR)x->Object & ~OBJ_HANDLE_ATTRIBUTES))
83 
84 //
85 // Recovers the security descriptor from a cached security descriptor header
86 //
87 #define ObpGetHeaderForSd(x) \
88  CONTAINING_RECORD((x), SECURITY_DESCRIPTOR_HEADER, SecurityDescriptor)
89 
90 //
91 // Recovers the security descriptor from a cached security descriptor list entry
92 //
93 #define ObpGetHeaderForEntry(x) \
94  CONTAINING_RECORD((x), SECURITY_DESCRIPTOR_HEADER, Link)
95 
96 //
97 // Context Structures for Ex*Handle Callbacks
98 //
100 {
104 
106 {
110 
111 typedef struct _OBP_FIND_HANDLE_DATA
112 {
117 
118 //
119 // Cached Security Descriptor Header
120 //
122 {
128 
129 //
130 // Cached Security Descriptor List
131 //
132 typedef struct _OB_SD_CACHE_LIST
133 {
137 
138 //
139 // Structure for quick-compare of a DOS Device path
140 //
141 typedef union
142 {
143  WCHAR Name[sizeof(ULARGE_INTEGER) / sizeof(WCHAR)];
145 } ALIGNEDNAME;
146 
147 //
148 // Private Temporary Buffer for Lookup Routines
149 //
150 #define TAG_OB_TEMP_STORAGE 'tSbO'
151 typedef struct _OB_TEMP_BUFFER
152 {
158 
159 //
160 // Startup and Shutdown Functions
161 //
162 INIT_FUNCTION
163 BOOLEAN
164 NTAPI
166  VOID
167 );
168 
169 VOID
170 NTAPI
172  VOID
173 );
174 
175 //
176 // Directory Namespace Functions
177 //
178 BOOLEAN
179 NTAPI
182 );
183 
184 BOOLEAN
185 NTAPI
189  IN POBJECT_HEADER ObjectHeader
190 );
191 
192 PVOID
193 NTAPI
198  IN UCHAR SearchShadow,
200 );
201 
202 //
203 // Symbolic Link Functions
204 //
205 VOID
206 NTAPI
208  IN PVOID ObjectBody
209 );
210 
211 NTSTATUS
212 NTAPI
214  IN PVOID ParsedObject,
219  IN OUT PUNICODE_STRING FullPath,
223  OUT PVOID *NextObject
224 );
225 
226 VOID
227 NTAPI
230 );
231 
232 VOID
233 NTAPI
236 );
237 
238 //
239 // Process/Handle Table Init/Rundown
240 //
241 NTSTATUS
242 NTAPI
246 );
247 
249 NTAPI
252 );
253 
254 VOID
255 NTAPI
258 );
259 
260 VOID
261 NTAPI
264 );
265 
266 //
267 // Object Lookup Functions
268 //
269 NTSTATUS
270 NTAPI
272  IN HANDLE RootHandle OPTIONAL,
277  IN OUT PVOID ParseContext,
279  IN PVOID InsertObject OPTIONAL,
281  OUT POBP_LOOKUP_CONTEXT LookupContext,
282  OUT PVOID *FoundObject
283 );
284 
285 //
286 // Object Attribute Functions
287 //
288 BOOLEAN
289 NTAPI
291  IN OUT PHANDLE_TABLE_ENTRY HandleTableEntry,
293 );
294 
295 NTSTATUS
296 NTAPI
299  OUT PPROCESS_DEVICEMAP_INFORMATION DeviceMapInfo,
300  IN ULONG Flags
301 );
302 
303 //
304 // Object Lifetime Functions
305 //
306 VOID
307 NTAPI
309  IN PVOID Object,
310  IN BOOLEAN CalledFromWorkerThread
311 );
312 
313 LONG
314 FASTCALL
316  IN PVOID Object,
317  IN LONG Count
318 );
319 
320 LONG
321 FASTCALL
323  IN PVOID Object,
324  IN LONG Count
325 );
326 
327 BOOLEAN
328 FASTCALL
330  IN PVOID Object
331 );
332 
333 VOID
334 NTAPI
336  IN PVOID Unused
337 );
338 
339 VOID
340 FASTCALL
342  IN PVOID ObjectBody,
343  IN BOOLEAN Permanent
344 );
345 
346 VOID
347 NTAPI
349  IN PVOID Object
350 );
351 
352 VOID
353 NTAPI
356 );
357 
358 NTSTATUS
359 NTAPI
361  IN PEPROCESS SourceProcess,
363  IN PEPROCESS TargetProcess OPTIONAL,
367  IN ULONG Options,
369 );
370 
371 VOID
372 NTAPI
374  IN POBJECT_CREATE_INFORMATION ObjectCreateInfo
375 );
376 
377 VOID
378 NTAPI
381 );
382 
383 VOID
384 NTAPI
386  IN PVOID Object
387 );
388 
389 NTSTATUS
390 NTAPI
392  IN HANDLE Handle,
396 );
397 
398 //
399 // DOS Devices Functions
400 //
401 NTSTATUS
402 NTAPI
406 );
407 
408 NTSTATUS
409 NTAPI
412 );
413 
414 VOID
415 NTAPI
418 );
419 
420 VOID
421 FASTCALL
423  IN PDEVICE_MAP DeviceMap
424 );
425 
426 VOID
427 NTAPI
431 );
432 
433 INIT_FUNCTION
434 NTSTATUS
435 NTAPI
437  VOID
438 );
439 
440 ULONG
441 NTAPI
443  VOID
444 );
445 
447 NTAPI
449  VOID
450 );
451 
452 //
453 // Security descriptor cache functions
454 //
455 INIT_FUNCTION
456 NTSTATUS
457 NTAPI
459  VOID
460 );
461 
463 NTAPI
465  IN POBJECT_HEADER ObjectHeader
466 );
467 
468 //
469 // Object Security Routines
470 //
471 BOOLEAN
472 NTAPI
474  IN PVOID Object,
476  IN BOOLEAN LockHeld,
478  OUT PNTSTATUS ReturnedStatus
479 );
480 
481 BOOLEAN
482 NTAPI
484  IN PVOID Object,
485  IN ACCESS_MASK CreateAccess,
487  IN PUNICODE_STRING ComponentName,
488  IN BOOLEAN LockHeld,
491 );
492 
493 BOOLEAN
494 NTAPI
496  IN PVOID Object,
497  IN ACCESS_MASK TraverseAccess,
499  IN BOOLEAN LockHeld,
502 );
503 
504 BOOLEAN
505 NTAPI
507  IN PVOID Object,
509  IN BOOLEAN LockHeld,
512 );
513 
514 //
515 // Default Object Security Callback Routines
516 //
517 NTSTATUS
518 NTAPI
520  IN PVOID Object,
523 );
524 
525 NTSTATUS
526 NTAPI
529 );
530 
531 NTSTATUS
532 NTAPI
534  IN PVOID Object,
538  IN PSECURITY_DESCRIPTOR *OutputSecurityDescriptor
539 );
540 
541 NTSTATUS
542 NTAPI
544  IN PVOID Object,
547  IN OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor,
550 );
551 
552 //
553 // Executive Fast Referencing Functions
554 //
555 VOID
556 FASTCALL
558  IN PEX_FAST_REF FastRef,
559  IN PVOID Object
560 );
561 
562 PVOID
563 FASTCALL
565  IN PEX_FAST_REF FastRef,
566  IN PVOID Object
567 );
568 
569 PVOID
570 FASTCALL
572  IN PEX_FAST_REF FastRef
573 );
574 
575 PVOID
576 FASTCALL
578  IN PEX_FAST_REF FastRef
579 );
580 
581 VOID
582 FASTCALL
584  IN PEX_FAST_REF FastRef,
585  IN PVOID Object
586 );
587 
588 //
589 // Object Create and Object Name Capture Functions
590 //
591 NTSTATUS
592 NTAPI
594  IN PUNICODE_STRING CapturedName,
597  IN BOOLEAN AllocateFromLookaside
598 );
599 
600 NTSTATUS
601 NTAPI
605  IN KPROCESSOR_MODE CreatorMode,
606  IN BOOLEAN AllocateFromLookaside,
607  IN POBJECT_CREATE_INFORMATION ObjectCreateInfo,
609 );
610 
611 //
612 // Miscellanea
613 //
614 ULONG
615 NTAPI
618 );
619 
620 //
621 // Global data inside the Object Manager
622 //
623 extern ULONG ObpTraceLevel;
624 extern KEVENT ObpDefaultObject;
633 extern volatile PVOID ObpReaperList;
642 extern ULONG ObpProtectionMode;
645 
646 //
647 // Inlined Functions
648 //
649 #include "ob_x.h"
VOID NTAPI ObpDeleteSymbolicLink(IN PVOID ObjectBody)
VOID NTAPI ObKillProcess(IN PEPROCESS Process)
Definition: obhandle.c:2157
POBJECT_HEADER ObjectHeader
Definition: ob.h:113
* PNTSTATUS
Definition: strlen.c:14
PHANDLE_TABLE NTAPI ObReferenceProcessHandleTable(IN PEPROCESS Process)
Definition: obhandle.c:29
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
ObjectType
Definition: metafile.c:80
BOOLEAN NTAPI ObpCheckObjectReference(IN PVOID Object, IN OUT PACCESS_STATE AccessState, IN BOOLEAN LockHeld, IN KPROCESSOR_MODE AccessMode, OUT PNTSTATUS AccessStatus)
Definition: obsecure.c:340
_In_ HANDLE _In_opt_ HANDLE _Out_opt_ PHANDLE _In_ ACCESS_MASK _In_ ULONG HandleAttributes
Definition: obfuncs.h:429
_Must_inspect_result_ typedef _In_ PVOID Unused
Definition: iotypes.h:1129
#define IN
Definition: typedefs.h:38
struct _OB_TEMP_BUFFER * POB_TEMP_BUFFER
struct _OB_SD_CACHE_LIST * POB_SD_CACHE_LIST
OBJECT_HANDLE_ATTRIBUTE_INFORMATION Information
Definition: ob.h:102
BOOLEAN NTAPI ObpSetHandleAttributes(IN OUT PHANDLE_TABLE_ENTRY HandleTableEntry, IN ULONG_PTR Context)
Definition: obhandle.c:1856
POBJECT_TYPE ObjectType
Definition: ob.h:114
KPROCESSOR_MODE PreviousMode
Definition: ob.h:101
WORK_QUEUE_ITEM ObpReaperWorkItem
Definition: oblife.c:28
ULONG ObpLUIDDeviceMapsEnabled
Definition: devicemap.c:18
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK _Out_ PNTSTATUS AccessStatus
Definition: sefuncs.h:13
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
OBJECT_CREATE_INFORMATION ObjectCreateInfo
Definition: ob.h:154
struct _ULARGE_INTEGER ULARGE_INTEGER
WCHAR ObpUnsecureGlobalNamesBuffer[128]
Definition: obname.c:32
NTSTATUS NTAPI ObReferenceFileObjectForWrite(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode, OUT PFILE_OBJECT *FileObject, OUT POBJECT_HANDLE_INFORMATION HandleInformation)
Definition: obref.c:202
VOID FASTCALL ObfDereferenceDeviceMap(IN PDEVICE_MAP DeviceMap)
Definition: devicemap.c:477
VOID NTAPI ObpFreeObjectNameBuffer(IN PUNICODE_STRING Name)
Definition: oblife.c:347
LONG FASTCALL ObReferenceObjectEx(IN PVOID Object, IN LONG Count)
Definition: obref.c:79
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI ObSetDeviceMap(IN PEPROCESS Process, IN HANDLE DirectoryHandle)
Definition: devicemap.c:24
PVOID FASTCALL ObFastReferenceObject(IN PEX_FAST_REF FastRef)
Definition: obref.c:134
INIT_FUNCTION NTSTATUS NTAPI ObpInitSdCache(VOID)
Definition: obsdcach.c:61
static HANDLE DirectoryHandle
Definition: ObType.c:48
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
NTSTATUS NTAPI ObQueryDeviceMapInformation(IN PEPROCESS Process, OUT PPROCESS_DEVICEMAP_INFORMATION DeviceMapInfo, IN ULONG Flags)
BOOLEAN NTAPI ObpCheckTraverseAccess(IN PVOID Object, IN ACCESS_MASK TraverseAccess, IN PACCESS_STATE AccessState OPTIONAL, IN BOOLEAN LockHeld, IN KPROCESSOR_MODE AccessMode, OUT PNTSTATUS AccessStatus)
Definition: obsecure.c:267
struct _OBP_FIND_HANDLE_DATA * POBP_FIND_HANDLE_DATA
GENERAL_LOOKASIDE ObpCreateInfoLookasideList
Definition: oblife.c:26
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
Definition: acpixf.h:728
ALIGNEDNAME ObpDosDevicesShortNameRoot
Definition: obname.c:24
_In_ HANDLE SourceHandle
Definition: obfuncs.h:429
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
Definition: cmfuncs.h:62
VOID NTAPI ObpDeleteObjectType(IN PVOID Object)
Definition: oblife.c:1329
enum OPTION_FLAGS Options
Definition: stats.c:44
#define FASTCALL
Definition: nt_native.h:50
POBJECT_DIRECTORY ObpRootDirectoryObject
Definition: obname.c:19
VOID FASTCALL ObpSetPermanentObject(IN PVOID ObjectBody, IN BOOLEAN Permanent)
Definition: oblife.c:267
INIT_FUNCTION BOOLEAN NTAPI ObInitSystem(VOID)
Definition: obinit.c:202
PHANDLE_TABLE HandleTable
Definition: ob.h:107
BOOLEAN FASTCALL ObReferenceObjectSafe(IN PVOID Object)
Definition: obref.c:24
uint32_t ULONG_PTR
Definition: typedefs.h:63
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
ALIGNEDNAME ObpDosDevicesShortNamePrefix
Definition: obname.c:23
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ULARGE_INTEGER Alignment
Definition: ob.h:144
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
struct _SECURITY_DESCRIPTOR_HEADER SECURITY_DESCRIPTOR_HEADER
VOID NTAPI ObDereferenceProcessHandleTable(IN PEPROCESS Process)
Definition: obhandle.c:51
struct _OBP_CLOSE_HANDLE_CONTEXT * POBP_CLOSE_HANDLE_CONTEXT
long LONG
Definition: pedump.c:60
NTSTATUS NTAPI ObSetDirectoryDeviceMap(OUT PDEVICE_MAP *DeviceMap, IN HANDLE DirectoryHandle)
Definition: devicemap.c:149
VOID NTAPI ObpDeleteObject(IN PVOID Object, IN BOOLEAN CalledFromWorkerThread)
Definition: oblife.c:148
POBJECT_TYPE ObpDirectoryObjectType
Definition: obdir.c:20
ULONG NTAPI ObGetProcessHandleCount(IN PEPROCESS Process)
Definition: obhandle.c:59
GENERAL_LOOKASIDE ObpNameBufferLookasideList
Definition: oblife.c:26
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
Definition: mmfuncs.h:396
Definition: extypes.h:595
NTSTATUS NTAPI ObSetSecurityDescriptorInfo(IN PVOID Object, IN PSECURITY_INFORMATION SecurityInformation, IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor, IN POOL_TYPE PoolType, IN PGENERIC_MAPPING GenericMapping)
Definition: obsecure.c:117
unsigned char BOOLEAN
VOID NTAPI ObpReapObject(IN PVOID Unused)
Definition: oblife.c:221
POBJECT_HANDLE_INFORMATION HandleInformation
Definition: ob.h:115
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
PHANDLE_TABLE ObpKernelHandleTable
Definition: obhandle.c:20
struct _SECURITY_DESCRIPTOR_HEADER * PSECURITY_DESCRIPTOR_HEADER
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
BOOLEAN NTAPI ObpInsertEntryDirectory(IN POBJECT_DIRECTORY Parent, IN POBP_LOOKUP_CONTEXT Context, IN POBJECT_HEADER ObjectHeader)
Definition: obdir.c:45
_In_ HANDLE Handle
Definition: extypes.h:390
_In_ KPROCESSOR_MODE PreviousMode
Definition: sefuncs.h:103
ACCESS_STATE LocalAccessState
Definition: ob.h:153
struct _OB_TEMP_BUFFER OB_TEMP_BUFFER
volatile PVOID ObpReaperList
Definition: oblife.c:29
VOID NTAPI ObFreeObjectCreateInfoBuffer(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
Definition: oblife.c:604
ULONG ObpObjectSecurityMode
Definition: obinit.c:55
__wchar_t WCHAR
Definition: xmlstorage.h:180
PVOID FASTCALL ObFastReplaceObject(IN PEX_FAST_REF FastRef, IN PVOID Object)
DWORD * PSECURITY_INFORMATION
Definition: ms-dtyp.idl:311
INT POOL_TYPE
Definition: typedefs.h:76
ULONG ObpTraceLevel
Definition: obinit.c:47
_In_ ACCESS_MASK _In_opt_ POBJECT_TYPE _In_ KPROCESSOR_MODE _Out_ PVOID _Out_opt_ POBJECT_HANDLE_INFORMATION HandleInformation
Definition: obfuncs.h:40
VOID FASTCALL ObInitializeFastReference(IN PEX_FAST_REF FastRef, IN PVOID Object)
Definition: obref.c:109
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
* PFILE_OBJECT
Definition: iotypes.h:1955
static IUnknown Object
Definition: main.c:512
VOID NTAPI ObpCreateSymbolicLinkName(IN POBJECT_SYMBOLIC_LINK SymbolicLink)
Definition: oblink.c:334
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
Definition: sefuncs.h:414
UNICODE_STRING ObpDosDevicesShortName
Definition: obname.c:25
BOOLEAN NTAPI ObCheckCreateObjectAccess(IN PVOID Object, IN ACCESS_MASK CreateAccess, IN PACCESS_STATE AccessState, IN PUNICODE_STRING ComponentName, IN BOOLEAN LockHeld, IN KPROCESSOR_MODE AccessMode, OUT PNTSTATUS AccessStatus)
Definition: obsecure.c:203
PSECURITY_DESCRIPTOR NTAPI ObpReferenceSecurityDescriptor(IN POBJECT_HEADER ObjectHeader)
Definition: obsdcach.c:181
unsigned char UCHAR
Definition: xmlstorage.h:181
PVOID NTAPI ObpLookupEntryDirectory(IN POBJECT_DIRECTORY Directory, IN PUNICODE_STRING Name, IN ULONG Attributes, IN UCHAR SearchShadow, IN POBP_LOOKUP_CONTEXT Context)
Definition: obdir.c:158
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:414
EX_PUSH_LOCK PushLock
Definition: ob.h:134
POBJECT_TYPE ObpTypeObjectType
Definition: oblife.c:22
NTSTATUS NTAPI ObQuerySecurityDescriptorInfo(IN PVOID Object, IN PSECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG Length, IN PSECURITY_DESCRIPTOR *OutputSecurityDescriptor)
Definition: obsecure.c:85
BOOLEAN IoCountOperations
Definition: iomgr.c:38
VOID NTAPI ObShutdownSystem(VOID)
struct _OB_SD_CACHE_LIST OB_SD_CACHE_LIST
Definition: typedefs.h:117
AUX_ACCESS_DATA AuxData
Definition: ob.h:156
VOID NTAPI ObDereferenceDeviceMap(IN PEPROCESS Process)
Definition: devicemap.c:456
NTSTATUS NTAPI ObDeassignSecurity(IN OUT PSECURITY_DESCRIPTOR *SecurityDescriptor)
Definition: obsecure.c:60
static GENERIC_MAPPING GenericMapping
Definition: SeInheritance.c:11
BOOLEAN NTAPI ObCheckObjectAccess(IN PVOID Object, IN OUT PACCESS_STATE AccessState, IN BOOLEAN LockHeld, IN KPROCESSOR_MODE AccessMode, OUT PNTSTATUS ReturnedStatus)
Definition: obsecure.c:441
VOID NTAPI ObClearProcessHandleTable(IN PEPROCESS Process)
Definition: obhandle.c:2024
VOID NTAPI ObpDeleteSymbolicLinkName(IN POBJECT_SYMBOLIC_LINK SymbolicLink)
Definition: oblink.c:326
_Must_inspect_result_ _In_ USHORT _In_ PHIDP_PREPARSED_DATA _Out_writes_to_ LengthAttributes PHIDP_EXTENDED_ATTRIBUTES Attributes
Definition: hidpi.h:348
ULONG ObpProtectionMode
Definition: obinit.c:56
NTSTATUS NTAPI ObpCaptureObjectCreateInformation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN KPROCESSOR_MODE AccessMode, IN KPROCESSOR_MODE CreatorMode, IN BOOLEAN AllocateFromLookaside, IN POBJECT_CREATE_INFORMATION ObjectCreateInfo, OUT PUNICODE_STRING ObjectName)
Definition: oblife.c:456
OBP_LOOKUP_CONTEXT LookupContext
Definition: ob.h:155
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK DesiredAccess
Definition: create.c:4157
struct _OBP_SET_HANDLE_ATTRIBUTES_CONTEXT OBP_SET_HANDLE_ATTRIBUTES_CONTEXT
struct _OBP_SET_HANDLE_ATTRIBUTES_CONTEXT * POBP_SET_HANDLE_ATTRIBUTES_CONTEXT
NTSTATUS NTAPI ObpParseSymbolicLink(IN PVOID ParsedObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING FullPath, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *NextObject)
Definition: oblink.c:431
LONG FASTCALL ObDereferenceObjectEx(IN PVOID Object, IN LONG Count)
Definition: obref.c:90
unsigned int * PULONG
Definition: retypes.h:1
KEVENT ObpDefaultObject
Definition: oblife.c:23
NTSTATUS NTAPI ObAssignObjectSecurityDescriptor(IN PVOID Object, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN POOL_TYPE PoolType)
Definition: obsecure.c:20
POBJECT_TYPE ObpSymbolicLinkObjectType
Definition: oblink.c:19
INIT_FUNCTION NTSTATUS NTAPI ObpCreateDosDevicesDirectory(VOID)
Definition: obname.c:177
LIST_ENTRY Head
Definition: ob.h:135
VOID FASTCALL ObFastDereferenceObject(IN PEX_FAST_REF FastRef, IN PVOID Object)
Definition: obref.c:169
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
#define OUT
Definition: typedefs.h:39
unsigned int ULONG
Definition: retypes.h:1
base for all directory entries
Definition: entries.h:138
PVOID FASTCALL ObFastReferenceObjectLocked(IN PEX_FAST_REF FastRef)
Definition: obref.c:121
NTSTATUS NTAPI ObInitProcess(IN PEPROCESS Parent OPTIONAL, IN PEPROCESS Process)
Definition: obhandle.c:2087
struct _OBP_CLOSE_HANDLE_CONTEXT OBP_CLOSE_HANDLE_CONTEXT
ULONG ObpLUIDDeviceMapsDisabled
Definition: devicemap.c:17
NTSTATUS NTAPI ObDuplicateObject(IN PEPROCESS SourceProcess, IN HANDLE SourceHandle, IN PEPROCESS TargetProcess OPTIONAL, IN PHANDLE TargetHandle OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG HandleAttributes, IN ULONG Options, IN KPROCESSOR_MODE PreviousMode)
Definition: obhandle.c:2201
NTSTATUS NTAPI ObpCaptureObjectName(IN PUNICODE_STRING CapturedName, IN PUNICODE_STRING ObjectName, IN KPROCESSOR_MODE AccessMode, IN BOOLEAN AllocateFromLookaside)
ULONG ObpUnsecureGlobalNamesLength
Definition: obname.c:33
PDEVICE_MAP NTAPI ObpReferenceDeviceMap(VOID)
Definition: devicemap.c:325
KGUARDED_MUTEX ObpDeviceMapLock
Definition: oblife.c:24
struct _OBP_FIND_HANDLE_DATA OBP_FIND_HANDLE_DATA
VOID NTAPI ObpDeleteNameCheck(IN PVOID Object)
Definition: obname.c:301
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T _In_ POOL_TYPE PoolType
Definition: fltkernel.h:1444
ULONG NTAPI ObIsLUIDDeviceMapsEnabled(VOID)
Definition: devicemap.c:661
_In_ HANDLE _In_opt_ HANDLE _Out_opt_ PHANDLE TargetHandle
Definition: obfuncs.h:429
ULONG ACCESS_MASK
Definition: nt_native.h:40
VOID NTAPI ObInheritDeviceMap(IN PEPROCESS Parent, IN PEPROCESS Process)
Definition: devicemap.c:511
KPROCESSOR_MODE AccessMode
Definition: ob.h:108
BOOLEAN NTAPI ObpDeleteEntryDirectory(IN POBP_LOOKUP_CONTEXT Context)
static const WCHAR SymbolicLink[]
Definition: interface.c:31
POBJECT_DIRECTORY ObpTypeDirectoryObject
Definition: obname.c:20
NTSTATUS NTAPI ObpLookupObjectName(IN HANDLE RootHandle OPTIONAL, IN OUT PUNICODE_STRING ObjectName, IN ULONG Attributes, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, IN PVOID InsertObject OPTIONAL, IN OUT PACCESS_STATE AccessState, OUT POBP_LOOKUP_CONTEXT LookupContext, OUT PVOID *FoundObject)
Definition: obname.c:448
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
Definition: cdprocs.h:806
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68