ReactOS  0.4.15-dev-3203-gacde1e0
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 // Handle Access Protection Close Flag
58 //
59 #define ObpAccessProtectCloseBit 0x02000000L
60 
61 //
62 // Identifies a Kernel Handle
63 //
64 #ifdef _WIN64
65 #define KERNEL_HANDLE_FLAG 0xFFFFFFFF80000000ULL
66 #else
67 #define KERNEL_HANDLE_FLAG 0x80000000
68 #endif
69 #define ObpIsKernelHandle(Handle, ProcessorMode) \
70  ((((ULONG_PTR)(Handle) & KERNEL_HANDLE_FLAG) == KERNEL_HANDLE_FLAG) && \
71  ((ProcessorMode) == KernelMode) && \
72  ((Handle) != NtCurrentProcess()) && \
73  ((Handle) != NtCurrentThread()))
74 
75 //
76 // Converts to and from a Kernel Handle to a normal handle
77 //
78 #define ObKernelHandleToHandle(Handle) \
79  (HANDLE)((ULONG_PTR)(Handle) & ~KERNEL_HANDLE_FLAG)
80 #define ObMarkHandleAsKernelHandle(Handle) \
81  (HANDLE)((ULONG_PTR)(Handle) | KERNEL_HANDLE_FLAG)
82 
83 //
84 // Converts from an EXHANDLE object to a POBJECT_HEADER
85 //
86 #define ObpGetHandleObject(x) \
87  ((POBJECT_HEADER)((ULONG_PTR)x->Object & ~OBJ_HANDLE_ATTRIBUTES))
88 
89 //
90 // Recovers the security descriptor from a cached security descriptor header
91 //
92 #define ObpGetHeaderForSd(x) \
93  CONTAINING_RECORD((x), SECURITY_DESCRIPTOR_HEADER, SecurityDescriptor)
94 
95 //
96 // Recovers the security descriptor from a cached security descriptor list entry
97 //
98 #define ObpGetHeaderForEntry(x) \
99  CONTAINING_RECORD((x), SECURITY_DESCRIPTOR_HEADER, Link)
100 
101 //
102 // Context Structures for Ex*Handle Callbacks
103 //
105 {
109 
111 {
115 
116 typedef struct _OBP_FIND_HANDLE_DATA
117 {
122 
123 //
124 // Cached Security Descriptor Header
125 //
127 {
133 
134 //
135 // Cached Security Descriptor List
136 //
137 typedef struct _OB_SD_CACHE_LIST
138 {
142 
143 //
144 // Structure for quick-compare of a DOS Device path
145 //
146 typedef union
147 {
148  WCHAR Name[sizeof(ULARGE_INTEGER) / sizeof(WCHAR)];
150 } ALIGNEDNAME;
151 
152 //
153 // Private Temporary Buffer for Lookup Routines
154 //
155 #define TAG_OB_TEMP_STORAGE 'tSbO'
156 typedef struct _OB_TEMP_BUFFER
157 {
163 
164 //
165 // Startup and Shutdown Functions
166 //
167 CODE_SEG("INIT")
168 BOOLEAN
169 NTAPI
171  VOID
172 );
173 
174 VOID
175 NTAPI
177  VOID
178 );
179 
180 //
181 // Directory Namespace Functions
182 //
183 BOOLEAN
184 NTAPI
187 );
188 
189 BOOLEAN
190 NTAPI
194  IN POBJECT_HEADER ObjectHeader
195 );
196 
197 PVOID
198 NTAPI
203  IN UCHAR SearchShadow,
205 );
206 
207 //
208 // Symbolic Link Functions
209 //
210 VOID
211 NTAPI
213  IN PVOID ObjectBody
214 );
215 
216 NTSTATUS
217 NTAPI
219  IN PVOID ParsedObject,
224  IN OUT PUNICODE_STRING FullPath,
228  OUT PVOID *NextObject
229 );
230 
231 VOID
232 NTAPI
235 );
236 
237 VOID
238 NTAPI
241 );
242 
243 //
244 // Process/Handle Table Init/Rundown
245 //
246 NTSTATUS
247 NTAPI
251 );
252 
254 NTAPI
257 );
258 
259 VOID
260 NTAPI
263 );
264 
265 VOID
266 NTAPI
269 );
270 
271 //
272 // Object Lookup Functions
273 //
274 NTSTATUS
275 NTAPI
277  IN HANDLE RootHandle OPTIONAL,
282  IN OUT PVOID ParseContext,
284  IN PVOID InsertObject OPTIONAL,
286  OUT POBP_LOOKUP_CONTEXT LookupContext,
287  OUT PVOID *FoundObject
288 );
289 
290 //
291 // Object Attribute Functions
292 //
293 BOOLEAN
294 NTAPI
296  IN OUT PHANDLE_TABLE_ENTRY HandleTableEntry,
298 );
299 
300 NTSTATUS
301 NTAPI
306 );
307 
308 //
309 // Object Lifetime Functions
310 //
311 VOID
312 NTAPI
314  IN PVOID Object,
315  IN BOOLEAN CalledFromWorkerThread
316 );
317 
318 LONG
319 FASTCALL
321  IN PVOID Object,
322  IN LONG Count
323 );
324 
325 LONG
326 FASTCALL
328  IN PVOID Object,
329  IN LONG Count
330 );
331 
332 BOOLEAN
333 FASTCALL
335  IN PVOID Object
336 );
337 
338 VOID
339 NTAPI
341  IN PVOID Unused
342 );
343 
344 VOID
345 FASTCALL
347  IN PVOID ObjectBody,
348  IN BOOLEAN Permanent
349 );
350 
351 VOID
352 NTAPI
354  IN PVOID Object
355 );
356 
357 VOID
358 NTAPI
361 );
362 
363 NTSTATUS
364 NTAPI
366  IN PEPROCESS SourceProcess,
368  IN PEPROCESS TargetProcess OPTIONAL,
372  IN ULONG Options,
374 );
375 
376 VOID
377 NTAPI
379  IN POBJECT_CREATE_INFORMATION ObjectCreateInfo
380 );
381 
382 VOID
383 NTAPI
386 );
387 
388 VOID
389 NTAPI
391  IN PVOID Object
392 );
393 
394 NTSTATUS
395 NTAPI
397  IN HANDLE Handle,
401 );
402 
403 //
404 // DOS Devices Functions
405 //
406 NTSTATUS
407 NTAPI
411 );
412 
413 NTSTATUS
414 NTAPI
417 );
418 
419 VOID
420 NTAPI
423 );
424 
425 VOID
426 FASTCALL
428  IN PDEVICE_MAP DeviceMap
429 );
430 
431 VOID
432 NTAPI
436 );
437 
438 CODE_SEG("INIT")
439 NTSTATUS
440 NTAPI
442  VOID
443 );
444 
445 ULONG
446 NTAPI
448  VOID
449 );
450 
452 NTAPI
454  VOID
455 );
456 
457 //
458 // Security descriptor cache functions
459 //
460 CODE_SEG("INIT")
461 NTSTATUS
462 NTAPI
464  VOID
465 );
466 
468 NTAPI
470  IN POBJECT_HEADER ObjectHeader
471 );
472 
473 //
474 // Object Security Routines
475 //
476 BOOLEAN
477 NTAPI
479  IN PVOID Object,
481  IN BOOLEAN LockHeld,
483  OUT PNTSTATUS ReturnedStatus
484 );
485 
486 BOOLEAN
487 NTAPI
489  IN PVOID Object,
490  IN ACCESS_MASK CreateAccess,
492  IN PUNICODE_STRING ComponentName,
493  IN BOOLEAN LockHeld,
496 );
497 
498 BOOLEAN
499 NTAPI
501  IN PVOID Object,
502  IN ACCESS_MASK TraverseAccess,
504  IN BOOLEAN LockHeld,
507 );
508 
509 BOOLEAN
510 NTAPI
512  IN PVOID Object,
514  IN BOOLEAN LockHeld,
517 );
518 
519 //
520 // Default Object Security Callback Routines
521 //
522 NTSTATUS
523 NTAPI
525  IN PVOID Object,
528 );
529 
530 NTSTATUS
531 NTAPI
534 );
535 
536 NTSTATUS
537 NTAPI
539  IN PVOID Object,
543  IN PSECURITY_DESCRIPTOR *OutputSecurityDescriptor
544 );
545 
546 NTSTATUS
547 NTAPI
549  IN PVOID Object,
552  IN OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor,
555 );
556 
557 //
558 // Executive Fast Referencing Functions
559 //
560 VOID
561 FASTCALL
563  IN PEX_FAST_REF FastRef,
564  IN PVOID Object
565 );
566 
567 PVOID
568 FASTCALL
570  IN PEX_FAST_REF FastRef,
571  IN PVOID Object
572 );
573 
574 PVOID
575 FASTCALL
577  IN PEX_FAST_REF FastRef
578 );
579 
580 PVOID
581 FASTCALL
583  IN PEX_FAST_REF FastRef
584 );
585 
586 VOID
587 FASTCALL
589  IN PEX_FAST_REF FastRef,
590  IN PVOID Object
591 );
592 
593 //
594 // Object Create and Object Name Capture Functions
595 //
596 NTSTATUS
597 NTAPI
599  IN PUNICODE_STRING CapturedName,
602  IN BOOLEAN AllocateFromLookaside
603 );
604 
605 NTSTATUS
606 NTAPI
610  IN KPROCESSOR_MODE CreatorMode,
611  IN BOOLEAN AllocateFromLookaside,
612  IN POBJECT_CREATE_INFORMATION ObjectCreateInfo,
614 );
615 
616 //
617 // Miscellanea
618 //
619 ULONG
620 NTAPI
623 );
624 
625 //
626 // Global data inside the Object Manager
627 //
628 extern ULONG ObpTraceLevel;
629 extern KEVENT ObpDefaultObject;
647 extern ULONG ObpProtectionMode;
650 
651 //
652 // Inlined Functions
653 //
654 #include "ob_x.h"
VOID NTAPI ObpDeleteSymbolicLink(IN PVOID ObjectBody)
VOID NTAPI ObKillProcess(IN PEPROCESS Process)
Definition: obhandle.c:2156
POBJECT_HEADER ObjectHeader
Definition: ob.h:118
* PNTSTATUS
Definition: strlen.c:14
PHANDLE_TABLE NTAPI ObReferenceProcessHandleTable(IN PEPROCESS Process)
Definition: obhandle.c:28
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:1166
#define IN
Definition: typedefs.h:39
struct _OB_TEMP_BUFFER * POB_TEMP_BUFFER
struct _OB_SD_CACHE_LIST * POB_SD_CACHE_LIST
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
OBJECT_HANDLE_ATTRIBUTE_INFORMATION Information
Definition: ob.h:107
#define _In_opt_
Definition: ms_sal.h:309
BOOLEAN NTAPI ObpSetHandleAttributes(IN OUT PHANDLE_TABLE_ENTRY HandleTableEntry, IN ULONG_PTR Context)
Definition: obhandle.c:1855
POBJECT_TYPE ObjectType
Definition: ob.h:119
KPROCESSOR_MODE PreviousMode
Definition: ob.h:106
WORK_QUEUE_ITEM ObpReaperWorkItem
Definition: oblife.c:28
NTSTATUS NTAPI ObQueryDeviceMapInformation(_In_opt_ PEPROCESS Process, _Out_ PPROCESS_DEVICEMAP_INFORMATION DeviceMapInfo, _In_ ULONG Flags)
Definition: devicemap.c:539
#define _Out_
Definition: ms_sal.h:345
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:159
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:200
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:77
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:132
static HANDLE DirectoryHandle
Definition: ObType.c:48
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
#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
PHANDLE_TABLE HandleTable
Definition: ob.h:112
BOOLEAN FASTCALL ObReferenceObjectSafe(IN PVOID Object)
Definition: obref.c:22
uint32_t ULONG_PTR
Definition: typedefs.h:65
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
ALIGNEDNAME ObpDosDevicesShortNamePrefix
Definition: obname.c:23
ULARGE_INTEGER Alignment
Definition: ob.h:149
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:50
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:58
GENERAL_LOOKASIDE ObpNameBufferLookasideList
Definition: oblife.c:26
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
Definition: mmfuncs.h:395
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:120
NTSTATUS NTAPI ObpCreateDosDevicesDirectory(VOID)
Definition: obname.c:177
#define _In_
Definition: ms_sal.h:308
_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
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:547
BOOLEAN NTAPI ObpInsertEntryDirectory(IN POBJECT_DIRECTORY Parent, IN POBP_LOOKUP_CONTEXT Context, IN POBJECT_HEADER ObjectHeader)
Definition: obdir.c:45
#define volatile
Definition: prototyp.h:117
_In_ KPROCESSOR_MODE PreviousMode
Definition: sefuncs.h:103
int Count
Definition: noreturn.cpp:7
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3531
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ACCESS_STATE LocalAccessState
Definition: ob.h:158
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:56
__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:78
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:107
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
* PFILE_OBJECT
Definition: iotypes.h:1998
VOID NTAPI ObpCreateSymbolicLinkName(IN POBJECT_SYMBOLIC_LINK SymbolicLink)
Definition: oblink.c:334
BOOLEAN NTAPI ObInitSystem(VOID)
Definition: obinit.c:203
_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:454
EX_PUSH_LOCK PushLock
Definition: ob.h:139
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:119
AUX_ACCESS_DATA AuxData
Definition: ob.h:161
NTSTATUS NTAPI ObpInitSdCache(VOID)
Definition: obsdcach.c:61
VOID NTAPI ObDereferenceDeviceMap(IN PEPROCESS Process)
Definition: devicemap.c:456
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
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:2023
VOID NTAPI ObpDeleteSymbolicLinkName(IN POBJECT_SYMBOLIC_LINK SymbolicLink)
Definition: oblink.c:326
ULONG ObpProtectionMode
Definition: obinit.c:57
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:160
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:88
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
LIST_ENTRY Head
Definition: ob.h:140
VOID FASTCALL ObFastDereferenceObject(IN PEX_FAST_REF FastRef, IN PVOID Object)
Definition: obref.c:167
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
_In_ HANDLE Handle
Definition: extypes.h:390
#define OUT
Definition: typedefs.h:40
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3810
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:119
NTSTATUS NTAPI ObInitProcess(IN PEPROCESS Parent OPTIONAL, IN PEPROCESS Process)
Definition: obhandle.c:2086
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:2200
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
ULONG NTAPI ObIsLUIDDeviceMapsEnabled(VOID)
Definition: devicemap.c:662
static CODE_SEG("PAGE")
Definition: isapnp.c:1482
_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:113
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:446
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
Definition: cdprocs.h:801
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68