ReactOS 0.4.15-dev-5667-ged97270
io.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/io.h
5 * PURPOSE: Internal header for the I/O Manager
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
7 */
8
9#include "ntdddisk.h"
10
11//
12// Define this if you want debugging support
13//
14#define _IO_DEBUG_ 0x00
15
16//
17// These define the Debug Masks Supported
18//
19#define IO_IRP_DEBUG 0x01
20#define IO_FILE_DEBUG 0x02
21#define IO_API_DEBUG 0x04
22#define IO_CTL_DEBUG 0x08
23
24//
25// Debug/Tracing support
26//
27#if _IO_DEBUG_
28#ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
29#define IOTRACE(x, ...) \
30 { \
31 DbgPrintEx("%s [%.16s] - ", \
32 __FUNCTION__, \
33 PsGetCurrentProcess()->ImageFileName); \
34 DbgPrintEx(__VA_ARGS__); \
35 }
36#else
37#define IOTRACE(x, ...) \
38 if (x & IopTraceLevel) \
39 { \
40 DbgPrint("%s [%.16s] - ", \
41 __FUNCTION__, \
42 PsGetCurrentProcess()->ImageFileName); \
43 DbgPrint(__VA_ARGS__); \
44 }
45#endif
46#else
47#define IOTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
48#endif
49
50//
51// Registry path to the enumeration root key
52//
53#define ENUM_ROOT L"\\Registry\\Machine\\System\\CurrentControlSet\\Enum"
54
55//
56// Returns the type of METHOD_ used in this IOCTL
57//
58#define IO_METHOD_FROM_CTL_CODE(c) (c & 0x00000003)
59
60//
61// Bugcheck codes for RAM disk booting
62//
63//
64// No LoaderXIPRom descriptor was found in the loader memory list
65//
66#define RD_NO_XIPROM_DESCRIPTOR 1
67//
68// Unable to open the RAM disk driver (ramdisk.sys or \Device\Ramdisk)
69//
70#define RD_NO_RAMDISK_DRIVER 2
71//
72// FSCTL_CREATE_RAM_DISK failed
73//
74#define RD_FSCTL_FAILED 3
75//
76// Unable to create GUID string from binary GUID
77//
78#define RD_GUID_CONVERT_FAILED 4
79//
80// Unable to create symbolic link pointing to the RAM disk device
81//
82#define RD_SYMLINK_CREATE_FAILED 5
83//
84// Unable to create system root path when creating the RAM disk
85//
86#define RD_SYSROOT_INIT_FAILED 6
87
88//
89// Max traversal of reparse points for a single open in IoParseDevice
90//
91#define IOP_MAX_REPARSE_TRAVERSAL 0x20
92
93//
94// Private flags for IoCreateFile / IoParseDevice
95//
96#define IOP_USE_TOP_LEVEL_DEVICE_HINT 0x01
97#define IOP_CREATE_FILE_OBJECT_EXTENSION 0x02
98
99
101{
104
106
107
108
109//
110// We can call the Ob Inlined API, it's the same thing
111//
112#define IopAllocateMdlFromLookaside \
113 ObpAllocateObjectCreateInfoBuffer
114#define IopFreeMdlFromLookaside \
115 ObpFreeCapturedAttributes
116
117//
118// Determines if the IRP is Synchronous
119//
120#define IsIrpSynchronous(Irp, FileObject) \
121 ((Irp->Flags & IRP_SYNCHRONOUS_API) || \
122 (!(FileObject) ? \
123 FALSE : \
124 FileObject->Flags & FO_SYNCHRONOUS_IO)) \
125
126//
127// Returns the internal Device Object Extension
128//
129#define IoGetDevObjExtension(DeviceObject) \
130 ((PEXTENDED_DEVOBJ_EXTENSION) \
131 (DeviceObject->DeviceObjectExtension)) \
132
133//
134// Returns the internal Driver Object Extension
135//
136#define IoGetDrvObjExtension(DriverObject) \
137 ((PEXTENDED_DRIVER_EXTENSION) \
138 (DriverObject->DriverExtension)) \
139
140/*
141 * VOID
142 * IopDeviceNodeSetFlag(
143 * PDEVICE_NODE DeviceNode,
144 * ULONG Flag);
145 */
146#define IopDeviceNodeSetFlag(DeviceNode, Flag) \
147 ((DeviceNode)->Flags |= (Flag))
148
149/*
150 * VOID
151 * IopDeviceNodeClearFlag(
152 * PDEVICE_NODE DeviceNode,
153 * ULONG Flag);
154 */
155#define IopDeviceNodeClearFlag(DeviceNode, Flag) \
156 ((DeviceNode)->Flags &= ~(Flag))
157
158/*
159 * BOOLEAN
160 * IopDeviceNodeHasFlag(
161 * PDEVICE_NODE DeviceNode,
162 * ULONG Flag);
163 */
164#define IopDeviceNodeHasFlag(DeviceNode, Flag) \
165 (((DeviceNode)->Flags & (Flag)) > 0)
166
167/*
168 * VOID
169 * IopDeviceNodeSetUserFlag(
170 * PDEVICE_NODE DeviceNode,
171 * ULONG UserFlag);
172 */
173#define IopDeviceNodeSetUserFlag(DeviceNode, UserFlag) \
174 ((DeviceNode)->UserFlags |= (UserFlag))
175
176/*
177 * VOID
178 * IopDeviceNodeClearUserFlag(
179 * PDEVICE_NODE DeviceNode,
180 * ULONG UserFlag);
181 */
182#define IopDeviceNodeClearUserFlag(DeviceNode, UserFlag)\
183 ((DeviceNode)->UserFlags &= ~(UserFlag))
184
185/*
186 * BOOLEAN
187 * IopDeviceNodeHasUserFlag(
188 * PDEVICE_NODE DeviceNode,
189 * ULONG UserFlag);
190 */
191#define IopDeviceNodeHasUserFlag(DeviceNode, UserFlag) \
192 (((DeviceNode)->UserFlags & (UserFlag)) > 0)
193
194 /*
195 * VOID
196 * IopDeviceNodeSetProblem(
197 * PDEVICE_NODE DeviceNode,
198 * ULONG Problem);
199 */
200#define IopDeviceNodeSetProblem(DeviceNode, Problem) \
201 ((DeviceNode)->Problem |= (Problem))
202
203/*
204 * VOID
205 * IopDeviceNodeClearProblem(
206 * PDEVICE_NODE DeviceNode,
207 * ULONG Problem);
208 */
209#define IopDeviceNodeClearProblem(DeviceNode, Problem) \
210 ((DeviceNode)->Problem &= ~(Problem))
211
212/*
213 * BOOLEAN
214 * IopDeviceNodeHasProblem(
215 * PDEVICE_NODE DeviceNode,
216 * ULONG Problem);
217 */
218#define IopDeviceNodeHasProblem(DeviceNode, Problem) \
219 (((DeviceNode)->Problem & (Problem)) > 0)
220
221/*
222 * VOID
223 * IopInitDeviceTreeTraverseContext(
224 * PDEVICETREE_TRAVERSE_CONTEXT DeviceTreeTraverseContext,
225 * PDEVICE_NODE DeviceNode,
226 * DEVICETREE_TRAVERSE_ROUTINE Action,
227 * PVOID Context);
228 */
229#define IopInitDeviceTreeTraverseContext( \
230 _DeviceTreeTraverseContext, _DeviceNode, _Action, \
231 _Context) { \
232 (_DeviceTreeTraverseContext)->FirstDeviceNode = \
233 (_DeviceNode); \
234 (_DeviceTreeTraverseContext)->Action = (_Action); \
235 (_DeviceTreeTraverseContext)->Context = (_Context); }
236
237/*
238 * BOOLEAN
239 * IopIsValidPhysicalDeviceObject(
240 * IN PDEVICE_OBJECT PhysicalDeviceObject);
241 */
242#define IopIsValidPhysicalDeviceObject(PhysicalDeviceObject) \
243 (((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject) && \
244 (((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode) && \
245 (((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode->Flags & DNF_ENUMERATED))
246
247//
248// Device List Operations
249//
251{
253 IopAdd
255
256//
257// Transfer statistics
258//
260{
265
266//
267// Packet Types when piggybacking on the IRP Overlay
268//
270 {
275
276//
277// Special version of the IRP Overlay used to optimize I/O completion
278// by not using up a separate structure.
279//
281{
282 struct
283 {
285 union
286 {
289 };
290 };
296
297//
298// I/O Completion Context for IoSetIoCompletionRoutineEx
299//
301{
306
307//
308// I/O Wrapper around the Executive Work Item
309//
310typedef struct _IO_WORKITEM
311{
317
318//
319// I/O Wrapper around the Kernel Interrupt
320//
321typedef struct _IO_INTERRUPT
322{
327
328//
329// I/O Error Log Packet Header
330//
331typedef struct _ERROR_LOG_ENTRY
332{
340
341//
342// To simplify matters, the kernel is made to support both the checked and free
343// version of the I/O Remove Lock in the same binary. This structure includes
344// both, since the DDK has the structure with a compile-time #ifdef.
345//
347{
351
352//
353// Dummy File Object used inside the Open Packet so that OB knows how to
354// deal with the Object Pointer even though it's not a real file.
355//
356typedef struct _DUMMY_FILE_OBJECT
357{
361
362//
363// Open packet used as a context for Device/File parsing so that the parse
364// routine can know what operation is being requested.
365//
366typedef struct _OPEN_PACKET
367{
397
398//
399// Boot Driver List Entry
400//
401typedef struct _DRIVER_INFORMATION
402{
412
413//
414// List of Bus Type GUIDs
415//
417{
423
424//
425// Shutdown entry for registed devices
426//
427typedef struct _SHUTDOWN_ENTRY
428{
432
433//
434// F/S Notification entry for registered File Systems
435//
437{
442
443//
444// Driver (Boot) Re-Initialization Entry
445//
447{
453
454//
455// Called on every visit of a node during a preorder-traversal of the device
456// node tree.
457// If the routine returns STATUS_UNSUCCESSFUL the traversal will stop and
458// STATUS_SUCCESS is returned to the caller who initiated the tree traversal.
459// Any other returned status code will be returned to the caller. If a status
460// code that indicates an error (other than STATUS_UNSUCCESSFUL) is returned,
461// the traversal is stopped immediately and the status code is returned to
462// the caller.
463//
464typedef
469);
470
471//
472// Context information for traversing the device tree
473//
475{
476 //
477 // Current device node during a traversal
478 //
480
481 //
482 // Initial device node where we start the traversal
483 //
485
486 //
487 // Action routine to be called for every device node
488 //
490
491 //
492 // Context passed to the action routine
493 //
496
497//
498// Reserve IRP allocator
499// Used for read paging IOs in low-memory situations
500//
502{
508
509//
510// Type selection for IopCreateSecurityDescriptorPerType()
511//
513{
520
521//
522// Action types and data for PiQueueDeviceAction()
523//
524typedef enum _DEVICE_ACTION
525{
533
534//
535// Resource code
536//
537ULONG
538NTAPI
540
542NTAPI
545);
546
548NTAPI
552);
553
555NTAPI
558 IN BOOLEAN Silent,
559 OUT OPTIONAL PCM_PARTIAL_RESOURCE_DESCRIPTOR ConflictingDescriptor
560);
561
562//
563// PNP Routines
564//
566NTAPI
569 IN BOOLEAN LoadDriver,
571);
572
573CODE_SEG("INIT")
575NTAPI
577 VOID
578);
579
581NTAPI
583 VOID
584);
585
586VOID
588 VOID
589);
590
591VOID
593 VOID
594);
595
599);
600
604);
605
606VOID
609 _In_ PDEVICE_NODE ParentNode);
610
614 _In_ PNP_DEVNODE_STATE NewState);
615
616VOID
619 _In_ UINT32 Problem);
620
621VOID
624
628);
629
631NTAPI
633 PDEVICE_CAPABILITIES DeviceCaps);
634
638 IN PIO_STACK_LOCATION IoStackLocation,
640);
641
643NTAPI
649);
650
655);
656
659 VOID
660);
661
664 VOID
665);
666
667CODE_SEG("INIT")
670
673 const GUID *Guid,
674 PUNICODE_STRING DeviceIds
675);
676
678NTAPI
684
686NTAPI
691);
692
694NTAPI
697 IN HANDLE BaseHandle OPTIONAL,
702);
703
704
708
710NTAPI
715
716//
717// PnP Routines
718//
719CODE_SEG("INIT")
721NTAPI
723 VOID
724);
725
726CODE_SEG("INIT")
728NTAPI
730 VOID
731);
732
733USHORT
734NTAPI
736 IN HANDLE ServiceHandle
737);
738
739USHORT
740NTAPI
742 IN HANDLE ServiceHandle
743);
744
746NTAPI
748 IN PKEY_VALUE_FULL_INFORMATION KeyValueInformation,
749 OUT PUNICODE_STRING *UnicodeStringList,
750 OUT PULONG UnicodeStringCount
751);
752
754NTAPI
756 IN PWCHAR RegSzData,
757 IN ULONG RegSzLength,
758 OUT PUSHORT StringLength OPTIONAL
759);
760
761VOID
764 _In_ HANDLE InstanceKey);
765
766//
767// Initialization Routines
768//
769CODE_SEG("INIT")
771NTAPI
773 IN PLOADER_PARAMETER_BLOCK LoaderBlock
774);
775
776CODE_SEG("INIT")
778NTAPI
780 IN PLOADER_PARAMETER_BLOCK LoaderBlock,
781 OUT PANSI_STRING NtBootPath
782);
783
784CODE_SEG("INIT")
786NTAPI
788 IN PLOADER_PARAMETER_BLOCK LoaderBlock
789);
790
792NTAPI
794 IN PDRIVE_LAYOUT_INFORMATION_EX DriveLayout,
795 IN PARC_DISK_SIGNATURE ArcDiskSignature,
797);
798
800NTAPI
802 IN HANDLE PageFileHandle
803);
804
805CODE_SEG("INIT")
806VOID
808 VOID);
809
810//
811// Device/Volume Routines
812//
813VOID
814NTAPI
817);
818
819PVPB
820NTAPI
822 IN POPEN_PACKET OpenPacket,
826);
827
829NTAPI
832 IN BOOLEAN AllowRawMount,
833 IN BOOLEAN DeviceIsLocked,
835 OUT PVPB *Vpb
836);
837
838PVOID
841);
842
843PVOID
847);
848
850NTAPI
853);
854
855VOID
856NTAPI
858 IN PVPB Vpb
859);
860
861VOID
862NTAPI
864 VOID
865);
866
867VOID
868NTAPI
870 VOID
871);
872
874NTAPI
877);
878
879VOID
880NTAPI
883 IN BOOLEAN ForceUnload
884);
885
887NTAPI
891
893NTAPI
897);
898
899VOID
900NTAPI
903);
904
906NTAPI
909);
910
911//
912// IRP Routines
913//
915NTAPI
918 IN PKEVENT EventObject,
920);
921
922VOID
923NTAPI
925 IN PKEVENT EventObject,
926 IN PIRP Irp
927);
928
929PIRP
930NTAPI
933);
934
936NTAPI
938 IN PRESERVE_IRP_ALLOCATOR ReserveIrpAllocator
939);
940
941PIRP
942NTAPI
945);
946
947//
948// Shutdown routines
949//
950VOID
952 VOID
953);
954
955VOID
956NTAPI
958 IN ULONG Phase
959);
960
961VOID
962NTAPI
964 IN PLIST_ENTRY ListHead
965);
966
967//
968// Boot logging support
969//
970CODE_SEG("INIT")
971VOID
973 IN BOOLEAN StartBootLog
974);
975
976CODE_SEG("INIT")
977VOID
979 VOID
980);
981
982VOID
984 VOID
985);
986
987VOID
989 IN PUNICODE_STRING DriverName,
991);
992
993VOID
995 VOID
996);
997
998//
999// I/O Cancellation Routines
1000//
1001VOID
1002NTAPI
1005);
1006
1007VOID
1009 VOID
1010);
1011
1012//
1013// I/O Completion
1014//
1015VOID
1016NTAPI
1018 IN PKAPC Apc,
1019 IN PKNORMAL_ROUTINE* NormalRoutine,
1020 IN PVOID* NormalContext,
1023);
1024
1025//
1026// Error Logging Routines
1027//
1028VOID
1029NTAPI
1031 VOID
1032);
1033
1034VOID
1035NTAPI
1038);
1039
1040//
1041// Raw File System MiniDriver
1042//
1043BOOLEAN
1046);
1047
1048CODE_SEG("INIT")
1050NTAPI
1054);
1055
1056//
1057// PnP Root MiniDriver
1058//
1060NTAPI
1064);
1065
1071 OUT OPTIONAL PUNICODE_STRING FullInstancePath
1072);
1073
1077
1078//
1079// Driver Routines
1080//
1081CODE_SEG("INIT")
1082VOID
1085 VOID
1086);
1087
1088CODE_SEG("INIT")
1089VOID
1092 VOID
1093);
1094
1095VOID
1096NTAPI
1098 IN PVOID ObjectBody
1099);
1100
1103 _In_ HANDLE ServiceHandle,
1105
1108 _In_ HANDLE ServiceHandle,
1109 _Out_ PUNICODE_STRING DriverName,
1111
1114 _In_ PLDR_DATA_TABLE_ENTRY ModuleObject,
1115 _In_ HANDLE ServiceHandle,
1117 _Out_ NTSTATUS *DriverEntryStatus);
1118
1123 IN HANDLE EnumSubKey,
1124 IN HANDLE ClassKey,
1125 IN BOOLEAN Lower
1126);
1127
1128VOID
1129NTAPI
1131 VOID
1132);
1133
1134VOID
1135NTAPI
1137 VOID
1138);
1139
1140//
1141// File Routines
1142//
1143VOID
1144NTAPI
1145IopDeleteDevice(IN PVOID ObjectBody);
1146
1148NTAPI
1150 IN PVOID ParseObject,
1155 IN OUT PUNICODE_STRING CompleteName,
1160);
1161
1163NTAPI
1165 IN PVOID ParseObject,
1170 IN OUT PUNICODE_STRING CompleteName,
1175);
1176
1177VOID
1178NTAPI
1180 IN PVOID ObjectBody
1181);
1182
1184NTAPI
1186 IN PVOID ObjectBody,
1187 IN SECURITY_OPERATION_CODE OperationCode,
1191 OUT PSECURITY_DESCRIPTOR *OldSecurityDescriptor,
1194);
1195
1197NTAPI
1199 IN PVOID ObjectBody,
1200 IN BOOLEAN HasName,
1201 OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
1202 IN ULONG Length,
1205);
1206
1208NTAPI
1210 IN PVOID ObjectBody,
1211 IN BOOLEAN HasName,
1212 IN BOOLEAN QueryDosName,
1213 OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
1214 IN ULONG Length,
1217);
1218
1219VOID
1220NTAPI
1223 IN PVOID Object,
1226 IN ULONG SystemHandleCount
1227);
1228
1230NTAPI
1235 _Out_ PBOOLEAN LockFailed
1236);
1237
1238PVOID
1239NTAPI
1242);
1243
1245NTAPI
1249 IN BOOLEAN Define
1250);
1251
1252VOID
1253NTAPI
1255 IN PIRP Irp,
1257 IN PREPARSE_DATA_BUFFER DataBuffer
1258);
1259
1261NTAPI
1265);
1266
1268NTAPI
1271 IN ULONG Length,
1272 IN FILE_INFORMATION_CLASS FileInfoClass,
1275);
1276
1277BOOLEAN
1278NTAPI
1280 IN PDEVICE_OBJECT BaseDeviceObject,
1281 IN PDEVICE_OBJECT TopDeviceObjectHint
1282);
1283
1284//
1285// I/O Timer Routines
1286//
1287VOID
1290 VOID
1291);
1292
1293VOID
1294NTAPI
1297);
1298
1299//
1300// I/O Completion Routines
1301//
1302VOID
1303NTAPI
1305 PVOID ObjectBody
1306);
1307
1309NTAPI
1312 IN PVOID KeyContext,
1315 IN ULONG_PTR IoStatusInformation,
1316 IN BOOLEAN Quota
1317);
1318
1319//
1320// Ramdisk Routines
1321//
1322CODE_SEG("INIT")
1324NTAPI
1326 IN PLOADER_PARAMETER_BLOCK LoaderBlock
1327);
1328
1329//
1330// Configuration Routines
1331//
1333NTAPI
1335 IN GUID Guid,
1337 IN PULONG Interfaces
1338);
1339
1340VOID
1341NTAPI
1342IopStoreSystemPartitionInformation(IN PUNICODE_STRING NtSystemPartitionDeviceName,
1343 IN PUNICODE_STRING OsLoaderPathName
1344);
1345
1346//
1347// Device action
1348//
1349VOID
1353 _In_opt_ PKEVENT CompletionEvent,
1354 _Out_opt_ NTSTATUS *CompletionStatus);
1355
1360
1361//
1362// PnP notifications
1363//
1364CODE_SEG("PAGE")
1365VOID
1370
1371CODE_SEG("PAGE")
1372VOID
1375
1376CODE_SEG("PAGE")
1377VOID
1381 _In_opt_ PTARGET_DEVICE_CUSTOM_NOTIFICATION CustomNotification);
1382
1383//
1384// PnP IRPs
1385//
1389
1393
1397
1401
1406
1411
1416
1422 _Out_ PWSTR *DeviceText);
1423
1428
1429//
1430// Global I/O Data
1431//
1435extern ULONG IopTraceLevel;
1450
1451//
1452// Inlined Functions
1453//
1454#include "io_x.h"
@ DeviceNode
Definition: Node.h:9
unsigned char BOOLEAN
unsigned int UINT32
static GENERIC_MAPPING GenericMapping
Definition: SeInheritance.c:11
static ULONG StackSize
Definition: StackOverflow.c:19
Type
Definition: Type.h:7
LONG NTSTATUS
Definition: precomp.h:26
static WCHAR ServiceName[]
Definition: browser.c:19
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG _In_ ULONG _Out_ PULONG ReturnedLength
Definition: batclass.h:188
static const CLASS_AND_INTERFACES ExpectedInterfaces[]
Definition: browseui.c:13
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1157
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
Definition: cdprocs.h:802
Definition: bufpool.h:45
_In_ PIRP Irp
Definition: csq.h:116
#define NTSTATUS
Definition: precomp.h:20
static const WCHAR SymbolicLink[]
Definition: interface.c:31
static const WCHAR Signature[]
Definition: parser.c:141
NTSTATUS NTAPI IoCompletion(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Ctx)
Definition: control.c:382
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
Definition: dumpinfo.c:43
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
@ Success
Definition: eventcreate.c:712
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
Definition: fatprocs.h:1675
#define MAXIMUM_PROCESSORS
Definition: rwlock.h:5
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1340
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
Definition: directory.c:44
_In_ PLIST_ENTRY _In_ PSTRING _In_ USHORT _In_opt_ PSTRING _In_opt_ PSTRING _In_ ULONG _In_ ULONG _In_opt_ PVOID _In_opt_ PVOID FilterContext
Definition: fsrtlfuncs.h:746
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
ULONG Handle
Definition: gdb_input.c:15
Status
Definition: gdiplustypes.h:25
@ ProcessHandleCount
Definition: winternl.h:876
static CODE_SEG("PAGE")
Definition: isapnp.c:1482
_In_ PVOID Parameter
Definition: ldrtypes.h:241
* PNTSTATUS
Definition: strlen.c:14
ObjectType
Definition: metafile.c:81
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
DWORD * PSECURITY_INFORMATION
Definition: ms-dtyp.idl:311
#define _Out_opt_
Definition: ms_sal.h:346
#define _Out_
Definition: ms_sal.h:345
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:159
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
Definition: ndis.h:4715
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
Definition: cmfuncs.h:56
_In_ PVOID _In_ BOOLEAN Alertable
Definition: exfuncs.h:453
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID ApcContext
Definition: iofuncs.h:727
enum _PNP_DEVNODE_STATE PNP_DEVNODE_STATE
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
Definition: ketypes.h:684
ULONG ACCESS_MASK
Definition: nt_native.h:40
ACCESS_MASK * PACCESS_MASK
Definition: nt_native.h:41
#define FASTCALL
Definition: nt_native.h:50
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
@ FILE_OBJECT
Definition: ntobjenum.h:17
NTSTATUS PiIrpQueryResources(_In_ PDEVICE_NODE DeviceNode, _Out_ PCM_RESOURCE_LIST *Resources)
Definition: pnpirp.c:201
struct _DRIVER_INFORMATION DRIVER_INFORMATION
PVOID IoOpenFileOnDevice(IN PVOID SymbolicLink, IN PWCHAR Name)
LIST_ENTRY IopErrorLogListHead
Definition: error.c:30
NTSTATUS NTAPI IopOpenRegistryKeyEx(PHANDLE KeyHandle, HANDLE ParentKey, PUNICODE_STRING Name, ACCESS_MASK DesiredAccess)
Definition: pnpmgr.c:1455
NTSTATUS PiIrpStartDevice(_In_ PDEVICE_NODE DeviceNode)
Definition: pnpirp.c:87
LIST_ENTRY IopDeviceActionRequestList
Definition: devaction.c:46
PDEVICE_NODE FASTCALL IopGetDeviceNode(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS PiIrpQueryPnPDeviceState(_In_ PDEVICE_NODE DeviceNode, _Out_ PPNP_DEVICE_STATE DeviceState)
Definition: pnpirp.c:284
enum _SECURITY_DESCRIPTOR_TYPE SECURITY_DESCRIPTOR_TYPE
BOOLEAN NTAPI IoInitSystem(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: iomgr.c:465
enum _IOP_TRANSFER_TYPE IOP_TRANSFER_TYPE
NTSTATUS PiIrpCancelStopDevice(_In_ PDEVICE_NODE DeviceNode)
Definition: pnpirp.c:154
VOID NTAPI IoCancelThreadIo(IN PETHREAD Thread)
Definition: irp.c:1146
struct _EXTENDED_IO_REMOVE_LOCK * PEXTENDED_IO_REMOVE_LOCK
VOID NTAPI IopRemoveTimerFromTimerList(IN PIO_TIMER Timer)
Definition: iotimer.c:70
NTSTATUS NTAPI RawFsDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
Definition: rawfs.c:1193
VOID NTAPI IopReinitializeBootDrivers(VOID)
Definition: driver.c:1517
NTSTATUS NTAPI IoChangeFileObjectFilterContext(IN PFILE_OBJECT FileObject, IN PVOID FilterContext, IN BOOLEAN Define)
Definition: file.c:2511
KSPIN_LOCK IopDeviceActionLock
Definition: devaction.c:49
NTSTATUS IopQueueTargetDeviceEvent(const GUID *Guid, PUNICODE_STRING DeviceIds)
Definition: plugplay.c:49
_DEVICE_ACTION
Definition: io.h:525
@ PiActionResetDevice
Definition: io.h:528
@ PiActionQueryState
Definition: io.h:531
@ PiActionAddBootDevices
Definition: io.h:529
@ PiActionStartDevice
Definition: io.h:530
@ PiActionEnumRootDevices
Definition: io.h:527
@ PiActionEnumDeviceTree
Definition: io.h:526
NTSTATUS IopInitPlugPlayEvents(VOID)
Definition: plugplay.c:37
NTSTATUS IopInitializeDriverModule(_In_ PLDR_DATA_TABLE_ENTRY ModuleObject, _In_ HANDLE ServiceHandle, _Out_ PDRIVER_OBJECT *DriverObject, _Out_ NTSTATUS *DriverEntryStatus)
Initialize a loaded driver.
Definition: driver.c:428
ULONG NTAPI PnpDetermineResourceListSize(IN PCM_RESOURCE_LIST ResourceList)
Definition: pnpmgr.c:1807
VOID NTAPI IopLogWorker(IN PVOID Parameter)
Definition: error.c:148
VOID NTAPI IopUnloadDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: device.c:390
NTSTATUS IopLoadDriver(_In_ HANDLE ServiceHandle, _Out_ PDRIVER_OBJECT *DriverObject)
Definition: driver.c:1923
POBJECT_TYPE _IoFileObjectType
VOID NTAPI IopStoreSystemPartitionInformation(IN PUNICODE_STRING NtSystemPartitionDeviceName, IN PUNICODE_STRING OsLoaderPathName)
Definition: iorsrce.c:697
BOOLEAN NTAPI IoInitializeCrashDump(IN HANDLE PageFileHandle)
Definition: iomgr.c:657
GENERIC_MAPPING IopFileMapping
Definition: iomgr.c:49
NTSTATUS NTAPI IopReferenceDeviceObject(IN PDEVICE_OBJECT DeviceObject)
VOID PiInsertDevNode(_In_ PDEVICE_NODE DeviceNode, _In_ PDEVICE_NODE ParentNode)
Definition: devnode.c:80
BOOLEAN IoRemoteBootClient
Definition: init.c:70
NTSTATUS NTAPI IopFixupResourceListWithRequirements(IN PIO_RESOURCE_REQUIREMENTS_LIST RequirementsList, OUT PCM_RESOURCE_LIST *ResourceList)
Definition: pnpres.c:219
_SECURITY_DESCRIPTOR_TYPE
Definition: io.h:513
@ RestrictedPublicOpen
Definition: io.h:516
@ RestrictedPublic
Definition: io.h:514
@ UnrestrictedPublicOpen
Definition: io.h:517
@ SystemDefault
Definition: io.h:518
@ UnrestrictedPublic
Definition: io.h:515
USHORT NTAPI PpInitGetGroupOrderIndex(IN HANDLE ServiceHandle)
Definition: pnpinit.c:155
PVOID IoOpenSymlink(IN PVOID SymbolicLink)
VOID NTAPI IopCompleteRequest(IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2)
Definition: irp.c:238
NTSTATUS NTAPI IopGetSetSecurityObject(IN PVOID ObjectBody, IN SECURITY_OPERATION_CODE OperationCode, IN PSECURITY_INFORMATION SecurityInformation, IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN OUT PULONG BufferLength, OUT PSECURITY_DESCRIPTOR *OldSecurityDescriptor, IN POOL_TYPE PoolType, IN OUT PGENERIC_MAPPING GenericMapping)
NTSTATUS NTAPI IopQueryDeviceCapabilities(PDEVICE_NODE DeviceNode, PDEVICE_CAPABILITIES DeviceCaps)
Definition: devaction.c:854
NTSTATUS NTAPI IoComputeDesiredAccessFileObject(IN PFILE_OBJECT FileObject, IN PACCESS_MASK DesiredAccess)
Definition: util.c:26
VOID NTAPI IopShutdownBaseFileSystems(IN PLIST_ENTRY ListHead)
Definition: volume.c:349
BOOLEAN NTAPI IopInitializeReserveIrp(IN PRESERVE_IRP_ALLOCATOR ReserveIrpAllocator)
Definition: irp.c:549
struct _OPEN_PACKET * POPEN_PACKET
VOID IopStartBootLog(VOID)
Definition: bootlog.c:38
NTSTATUS NTAPI IopAssignDeviceResources(IN PDEVICE_NODE DeviceNode)
Definition: pnpres.c:1116
PVPB NTAPI IopCheckVpbMounted(IN POPEN_PACKET OpenPacket, IN PDEVICE_OBJECT DeviceObject, IN PUNICODE_STRING RemainingName, OUT PNTSTATUS Status)
Definition: volume.c:76
struct _FILE_OBJECT_EXTENSION FILE_OBJECT_EXTENSION
struct _IOP_MINI_COMPLETION_PACKET IOP_MINI_COMPLETION_PACKET
VOID FASTCALL IopInitializeSystemDrivers(VOID)
Definition: driver.c:1195
POBJECT_TYPE IoCompletionType
Definition: iocomp.c:16
PDEVICE_NODE PipAllocateDeviceNode(IN PDEVICE_OBJECT PhysicalDeviceObject)
NTSTATUS IoCreateDriverList(VOID)
struct _EXTENDED_IO_REMOVE_LOCK EXTENDED_IO_REMOVE_LOCK
VOID PiClearDevNodeProblem(_In_ PDEVICE_NODE DeviceNode)
Definition: devnode.c:141
struct _IO_BUS_TYPE_GUID_LIST IO_BUS_TYPE_GUID_LIST
PIRP NTAPI IopAllocateReserveIrp(IN CCHAR StackSize)
Definition: irp.c:573
VOID IopInitBootLog(IN BOOLEAN StartBootLog)
VOID IopSaveBootLogToFile(VOID)
Definition: bootlog.c:288
KSPIN_LOCK IopDeviceTreeLock
Definition: devnode.c:19
ULONG IopNumTriageDumpDataBlocks
Definition: iomgr.c:46
struct _ERROR_LOG_ENTRY * PERROR_LOG_ENTRY
NTSTATUS NTAPI IopQueryNameInternal(IN PVOID ObjectBody, IN BOOLEAN HasName, IN BOOLEAN QueryDosName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE PreviousMode)
Definition: file.c:1944
BOOLEAN NTAPI IopVerifyDeviceObjectOnStack(IN PDEVICE_OBJECT BaseDeviceObject, IN PDEVICE_OBJECT TopDeviceObjectHint)
Definition: device.c:695
VOID NTAPI IopInitErrorLog(VOID)
NTSTATUS NTAPI IopCreateDeviceKeyPath(IN PCUNICODE_STRING RegistryPath, IN ULONG CreateOptions, OUT PHANDLE Handle)
Definition: pnpmgr.c:522
enum _IOP_DEVICE_LIST_OPERATION * PIOP_DEVICE_LIST_OPERATION
VOID PiNotifyTargetDeviceChange(_In_ LPCGUID Event, _In_ PDEVICE_OBJECT DeviceObject, _In_opt_ PTARGET_DEVICE_CUSTOM_NOTIFICATION CustomNotification)
Delivers the event to all drivers subscribed to EventCategoryTargetDeviceChange PnP event.
Definition: pnpnotify.c:258
VOID NTAPI IopDereferenceDeviceObject(IN PDEVICE_OBJECT DeviceObject, IN BOOLEAN ForceUnload)
Definition: device.c:462
NTSTATUS NTAPI IopCleanupFailedIrp(IN PFILE_OBJECT FileObject, IN PKEVENT EventObject, IN PVOID Buffer OPTIONAL)
Definition: irp.c:45
NTSTATUS NTAPI IopCreateVpb(IN PDEVICE_OBJECT DeviceObject)
Definition: volume.c:158
NTSTATUS PnpRootRegisterDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: pnproot.c:130
BOOLEAN NTAPI PnpRegSzToString(IN PWCHAR RegSzData, IN ULONG RegSzLength, OUT PUSHORT StringLength OPTIONAL)
Definition: pnputil.c:171
USHORT NTAPI PipGetDriverTagPriority(IN HANDLE ServiceHandle)
Definition: pnpinit.c:198
NTSTATUS NTAPI IopInitializePlugPlayServices(VOID)
Definition: pnpinit.c:293
struct _FS_CHANGE_NOTIFY_ENTRY FS_CHANGE_NOTIFY_ENTRY
VOID PnpInit2(VOID)
NTSTATUS NTAPI IopParseFile(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
Definition: file.c:1319
NTSTATUS IopGetSystemPowerDeviceObject(IN PDEVICE_OBJECT *DeviceObject)
VOID NTAPI IopDoNameTransmogrify(IN PIRP Irp, IN PFILE_OBJECT FileObject, IN PREPARSE_DATA_BUFFER DataBuffer)
Definition: file.c:170
enum _SECURITY_DESCRIPTOR_TYPE * PSECURITY_DESCRIPTOR_TYPE
_IOP_TRANSFER_TYPE
Definition: io.h:260
@ IopWriteTransfer
Definition: io.h:262
@ IopReadTransfer
Definition: io.h:261
@ IopOtherTransfer
Definition: io.h:263
PVOID IopTriageDumpDataBlocks[64]
Definition: iomgr.c:47
NTSTATUS NTAPI IopGetRelatedTargetDevice(IN PFILE_OBJECT FileObject, OUT PDEVICE_NODE *DeviceNode)
Definition: device.c:653
NTSTATUS NTAPI IoGetRelatedTargetDevice(IN PFILE_OBJECT FileObject, OUT PDEVICE_OBJECT *DeviceObject)
Definition: device.c:1607
VOID IopInitDriverImplementation(VOID)
VOID NTAPI IopAbortInterruptedIrp(IN PKEVENT EventObject, IN PIRP Irp)
Definition: irp.c:67
NTSTATUS NTAPI IopGetRegistryValue(IN HANDLE Handle, IN PWSTR ValueName, OUT PKEY_VALUE_FULL_INFORMATION *Information)
Definition: pnpmgr.c:1606
VOID NTAPI IoInitVpbImplementation(VOID)
PIRP NTAPI IopAllocateIrpMustSucceed(IN CCHAR StackSize)
Definition: irp.c:716
NTSTATUS FASTCALL IopAttachFilterDrivers(IN PDEVICE_NODE DeviceNode, IN HANDLE EnumSubKey, IN HANDLE ClassKey, IN BOOLEAN Lower)
struct _SHUTDOWN_ENTRY SHUTDOWN_ENTRY
struct _IO_INTERRUPT * PIO_INTERRUPT
NTSTATUS NTAPI PiInitCacheGroupInformation(VOID)
Definition: pnpinit.c:100
PIO_BUS_TYPE_GUID_LIST IopBusTypeGuidList
struct _FS_CHANGE_NOTIFY_ENTRY * PFS_CHANGE_NOTIFY_ENTRY
NTSTATUS NTAPI PnpRootDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
Definition: pnproot.c:1589
_COMPLETION_PACKET_TYPE
Definition: io.h:270
@ IopCompletionPacketIrp
Definition: io.h:271
@ IopCompletionPacketMini
Definition: io.h:272
@ IopCompletionPacketQuota
Definition: io.h:273
struct _DRIVER_INFORMATION * PDRIVER_INFORMATION
NTSTATUS IopTraverseDeviceTree(PDEVICETREE_TRAVERSE_CONTEXT Context)
VOID PiNotifyDeviceInterfaceChange(_In_ LPCGUID Event, _In_ LPCGUID InterfaceClassGuid, _In_ PUNICODE_STRING SymbolicLinkName)
Delivers the event to all drivers subscribed to EventCategoryDeviceInterfaceChange.
Definition: pnpnotify.c:161
VOID PiSetDevNodeText(_In_ PDEVICE_NODE DeviceNode, _In_ HANDLE InstanceKey)
Sets the DeviceNode's DeviceDesc and LocationInformation registry values.
Definition: devaction.c:1089
NTSTATUS IopSynchronousCall(IN PDEVICE_OBJECT DeviceObject, IN PIO_STACK_LOCATION IoStackLocation, OUT PVOID *Information)
NTSTATUS IopFreeDeviceNode(IN PDEVICE_NODE DeviceNode)
struct _DUMMY_FILE_OBJECT DUMMY_FILE_OBJECT
VOID NTAPI IoShutdownSystem(IN ULONG Phase)
Definition: device.c:133
NTSTATUS NTAPI IopInitiatePnpIrp(IN PDEVICE_OBJECT DeviceObject, IN PIO_STATUS_BLOCK IoStatusBlock, IN UCHAR MinorFunction, IN PIO_STACK_LOCATION Stack)
PVOID NTAPI IoGetFileObjectFilterContext(IN PFILE_OBJECT FileObject)
Definition: file.c:2496
BOOLEAN NTAPI IopVerifyDiskSignature(IN PDRIVE_LAYOUT_INFORMATION_EX DriveLayout, IN PARC_DISK_SIGNATURE ArcDiskSignature, OUT PULONG Signature)
Definition: arcname.c:948
NTSTATUS NTAPI IopQueryName(IN PVOID ObjectBody, IN BOOLEAN HasName, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength, IN KPROCESSOR_MODE PreviousMode)
Definition: file.c:1926
NTSTATUS NTAPI IopAcquireFileObjectLock(_In_ PFILE_OBJECT FileObject, _In_ KPROCESSOR_MODE AccessMode, _In_ BOOLEAN Alertable, _Out_ PBOOLEAN LockFailed)
Definition: file.c:2450
VOID NTAPI IopDeleteDriver(IN PVOID ObjectBody)
Definition: driver.c:77
struct _IO_UNLOAD_SAFE_COMPLETION_CONTEXT * PIO_UNLOAD_SAFE_COMPLETION_CONTEXT
struct _RESERVE_IRP_ALLOCATOR RESERVE_IRP_ALLOCATOR
NTSTATUS IopGetDriverNames(_In_ HANDLE ServiceHandle, _Out_ PUNICODE_STRING DriverName, _Out_opt_ PUNICODE_STRING ServiceName)
Definition: driver.c:123
VOID FASTCALL IopInitializeBootDrivers(VOID)
Definition: driver.c:1008
NTSTATUS PiIrpQueryResourceRequirements(_In_ PDEVICE_NODE DeviceNode, _Out_ PIO_RESOURCE_REQUIREMENTS_LIST *Resources)
Definition: pnpirp.c:227
NTSTATUS NTAPI IopUpdateRootKey(VOID)
Definition: pnpmgr.c:1397
VOID PiSetDevNodeProblem(_In_ PDEVICE_NODE DeviceNode, _In_ UINT32 Problem)
Definition: devnode.c:132
NTSTATUS NTAPI IopCreateRegistryKeyEx(OUT PHANDLE Handle, IN HANDLE BaseHandle OPTIONAL, IN PUNICODE_STRING KeyName, IN ACCESS_MASK DesiredAccess, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL)
NTSTATUS NTAPI IopStartRamdisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: ramdisk.c:26
PNP_DEVNODE_STATE PiSetDevNodeState(_In_ PDEVICE_NODE DeviceNode, _In_ PNP_DEVNODE_STATE NewState)
Definition: devnode.c:108
enum _DEVICE_ACTION DEVICE_ACTION
NTSTATUS NTAPI PipCallDriverAddDevice(IN PDEVICE_NODE DeviceNode, IN BOOLEAN LoadDriver, IN PDRIVER_OBJECT DriverObject)
struct _DUMMY_FILE_OBJECT * PDUMMY_FILE_OBJECT
struct _IO_BUS_TYPE_GUID_LIST * PIO_BUS_TYPE_GUID_LIST
struct _SHUTDOWN_ENTRY * PSHUTDOWN_ENTRY
NTSTATUS NTAPI IopDetectResourceConflict(IN PCM_RESOURCE_LIST ResourceList, IN BOOLEAN Silent, OUT OPTIONAL PCM_PARTIAL_RESOURCE_DESCRIPTOR ConflictingDescriptor)
Definition: pnpres.c:1255
enum _IOP_TRANSFER_TYPE * PIOP_TRANSFER_TYPE
enum _COMPLETION_PACKET_TYPE COMPLETION_PACKET_TYPE
VOID NTAPI IoInitFileSystemImplementation(VOID)
NTSTATUS PnpRootCreateDevice(IN PUNICODE_STRING ServiceName, IN OPTIONAL PDRIVER_OBJECT DriverObject, OUT PDEVICE_OBJECT *PhysicalDeviceObject, OUT OPTIONAL PUNICODE_STRING FullInstancePath)
Definition: pnproot.c:186
VOID IopStopBootLog(VOID)
Definition: bootlog.c:46
VOID NTAPI IopCloseFile(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
Definition: file.c:2178
VOID NTAPI IopReinitializeDrivers(VOID)
Definition: driver.c:1481
struct _DEVICETREE_TRAVERSE_CONTEXT DEVICETREE_TRAVERSE_CONTEXT
VOID IoInitCancelHandling(VOID)
NTSTATUS PiIrpQueryStopDevice(_In_ PDEVICE_NODE DeviceNode)
Definition: pnpirp.c:133
struct _FILE_OBJECT_EXTENSION * PFILE_OBJECT_EXTENSION
NTSTATUS NTAPI IoSetIoCompletion(IN PVOID IoCompletion, IN PVOID KeyContext, IN PVOID ApcContext, IN NTSTATUS IoStatus, IN ULONG_PTR IoStatusInformation, IN BOOLEAN Quota)
Definition: iocomp.c:147
NTSTATUS PiIrpStopDevice(_In_ PDEVICE_NODE DeviceNode)
Definition: pnpirp.c:111
NTSTATUS NTAPI IopFetchConfigurationInformation(OUT PWSTR *SymbolicLinkList, IN GUID Guid, IN ULONG ExpectedInterfaces, IN PULONG Interfaces)
Definition: iorsrce.c:656
PIO_BUS_TYPE_GUID_LIST PnpBusTypeGuidList
Definition: pnpmgr.c:27
PDRIVER_OBJECT IopRootDriverObject
Definition: pnpmgr.c:26
NTSTATUS NTAPI IopGetFileInformation(IN PFILE_OBJECT FileObject, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInfoClass, OUT PVOID Buffer, OUT PULONG ReturnedLength)
Definition: iofunc.c:777
NTSTATUS NTAPI IopMountVolume(IN PDEVICE_OBJECT DeviceObject, IN BOOLEAN AllowRawMount, IN BOOLEAN DeviceIsLocked, IN BOOLEAN Alertable, OUT PVPB *Vpb)
Definition: volume.c:462
VOID FASTCALL IopInitTimerImplementation(VOID)
NTSTATUS NTAPI IopReassignSystemRoot(IN PLOADER_PARAMETER_BLOCK LoaderBlock, OUT PANSI_STRING NtBootPath)
Definition: arcname.c:840
GENERAL_LOOKASIDE IopMdlLookasideList
Definition: iomgr.c:84
NTSTATUS IoDestroyDriverList(VOID)
struct _IO_UNLOAD_SAFE_COMPLETION_CONTEXT IO_UNLOAD_SAFE_COMPLETION_CONTEXT
struct _DRIVER_REINIT_ITEM * PDRIVER_REINIT_ITEM
VOID NTAPI IopDereferenceVpbAndFree(IN PVPB Vpb)
Definition: volume.c:186
VOID PiQueueDeviceAction(_In_ PDEVICE_OBJECT DeviceObject, _In_ DEVICE_ACTION Action, _In_opt_ PKEVENT CompletionEvent, _Out_opt_ NTSTATUS *CompletionStatus)
Queue a device operation to a worker thread.
Definition: devaction.c:2655
PDEVICE_OBJECT NTAPI IopGetDeviceAttachmentBase(IN PDEVICE_OBJECT DeviceObject)
Definition: file.c:1486
NTSTATUS(* DEVICETREE_TRAVERSE_ROUTINE)(IN PDEVICE_NODE DeviceNode, IN PVOID Context)
Definition: io.h:466
struct _IO_WORKITEM IO_WORKITEM
VOID PiInitializeNotifications(VOID)
Definition: pnpnotify.c:55
NTSTATUS PiIrpQueryDeviceText(_In_ PDEVICE_NODE DeviceNode, _In_ LCID LocaleId, _In_ DEVICE_TEXT_TYPE Type, _Out_ PWSTR *DeviceText)
Definition: pnpirp.c:253
VOID NTAPI IopDeleteDevice(IN PVOID ObjectBody)
Definition: device.c:52
ULONG IopTraceLevel
Definition: iomgr.c:16
PDEVICE_NODE IopRootDeviceNode
Definition: devnode.c:18
HAL_DISPATCH _HalDispatchTable
NTSTATUS NTAPI PnpRegMultiSzToUnicodeStrings(IN PKEY_VALUE_FULL_INFORMATION KeyValueInformation, OUT PUNICODE_STRING *UnicodeStringList, OUT PULONG UnicodeStringCount)
Definition: pnputil.c:47
VOID NTAPI IopDeleteIoCompletion(PVOID ObjectBody)
Definition: iocomp.c:100
struct _IOP_MINI_COMPLETION_PACKET * PIOP_MINI_COMPLETION_PACKET
BOOLEAN RawFsIsRawFileSystemDeviceObject(IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI PpInitSystem(VOID)
Definition: pnpmgr.c:1712
struct _ERROR_LOG_ENTRY ERROR_LOG_ENTRY
NTSTATUS PiIrpQueryDeviceRelations(_In_ PDEVICE_NODE DeviceNode, _In_ DEVICE_RELATION_TYPE Type)
Definition: pnpirp.c:176
_IOP_DEVICE_LIST_OPERATION
Definition: io.h:251
@ IopAdd
Definition: io.h:253
@ IopRemove
Definition: io.h:252
GENERIC_MAPPING IopCompletionMapping
Definition: iocomp.c:20
NTSTATUS PiPerformSyncDeviceAction(_In_ PDEVICE_OBJECT DeviceObject, _In_ DEVICE_ACTION Action)
Perfom a device operation synchronously via PiQueueDeviceAction.
Definition: devaction.c:2714
VOID NTAPI IopDeleteFile(IN PVOID ObjectBody)
Definition: file.c:1355
struct _DEVICETREE_TRAVERSE_CONTEXT * PDEVICETREE_TRAVERSE_CONTEXT
NTSTATUS NTAPI IopParseDevice(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
Definition: file.c:324
VOID IopBootLog(IN PUNICODE_STRING DriverName, IN BOOLEAN Success)
struct _OPEN_PACKET OPEN_PACKET
VOID NTAPI IopReadyDeviceObjects(IN PDRIVER_OBJECT Driver)
Definition: device.c:34
NTSTATUS NTAPI IopCreateArcNames(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: arcname.c:39
enum _IOP_DEVICE_LIST_OPERATION IOP_DEVICE_LIST_OPERATION
struct _IO_INTERRUPT IO_INTERRUPT
enum _COMPLETION_PACKET_TYPE * PCOMPLETION_PACKET_TYPE
struct _RESERVE_IRP_ALLOCATOR * PRESERVE_IRP_ALLOCATOR
RESERVE_IRP_ALLOCATOR IopReserveIrpAllocator
Definition: irp.c:19
VOID IoInitShutdownNotification(VOID)
VOID PiNotifyHardwareProfileChange(_In_ LPCGUID Event)
Delivers the event to all drivers subscribed to EventCategoryHardwareProfileChange PnP event.
Definition: pnpnotify.c:214
struct _DRIVER_REINIT_ITEM DRIVER_REINIT_ITEM
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
DWORD LCID
Definition: nls.h:13
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
Definition: arc.h:199
PDEVICE_NODE FirstDeviceNode
Definition: io.h:484
PDEVICE_NODE DeviceNode
Definition: io.h:479
DEVICETREE_TRAVERSE_ROUTINE Action
Definition: io.h:489
NTSTATUS Status
Definition: io.h:410
HANDLE ServiceHandle
Definition: io.h:406
PBOOT_DRIVER_LIST_ENTRY DataTableEntry
Definition: io.h:405
ULONG Failed
Definition: io.h:408
LIST_ENTRY Link
Definition: io.h:403
ULONG Processed
Definition: io.h:409
USHORT TagPosition
Definition: io.h:407
PDRIVER_OBJECT DriverObject
Definition: io.h:404
PDRIVER_OBJECT DriverObject
Definition: io.h:449
PDRIVER_REINITIALIZE ReinitRoutine
Definition: io.h:450
LIST_ENTRY ItemEntry
Definition: io.h:448
PVOID Context
Definition: io.h:451
CHAR FileObjectBody[sizeof(FILE_OBJECT)]
Definition: io.h:359
OBJECT_HEADER ObjectHeader
Definition: io.h:358
Definition: io.h:332
LARGE_INTEGER TimeStamp
Definition: io.h:338
CSHORT Size
Definition: io.h:334
CSHORT Type
Definition: io.h:333
LIST_ENTRY ListEntry
Definition: io.h:335
PDEVICE_OBJECT DeviceObject
Definition: io.h:336
PDRIVER_OBJECT DriverObject
Definition: io.h:337
IO_REMOVE_LOCK_DBG_BLOCK Dbg
Definition: io.h:349
IO_REMOVE_LOCK_COMMON_BLOCK Common
Definition: io.h:348
PDEVICE_OBJECT TopDeviceObjectHint
Definition: io.h:102
PVOID FilterContext
Definition: io.h:103
Definition: io.h:437
PDRIVER_FS_NOTIFICATION FSDNotificationProc
Definition: io.h:440
LIST_ENTRY FsChangeNotifyList
Definition: io.h:438
PDRIVER_OBJECT DriverObject
Definition: io.h:439
ULONG_PTR IoStatusInformation
Definition: io.h:294
struct _IO_STACK_LOCATION * CurrentStackLocation
Definition: io.h:287
LIST_ENTRY ListEntry
Definition: io.h:284
GUID Guids[1]
Definition: io.h:420
FAST_MUTEX Lock
Definition: io.h:419
KSPIN_LOCK SpinLock
Definition: io.h:325
KINTERRUPT FirstInterrupt
Definition: io.h:323
PIO_COMPLETION_ROUTINE CompletionRoutine
Definition: io.h:304
PDEVICE_OBJECT DeviceObject
Definition: io.h:302
PIO_WORKITEM_ROUTINE WorkerRoutine
Definition: io.h:314
PDEVICE_OBJECT DeviceObject
Definition: io.h:313
WORK_QUEUE_ITEM Item
Definition: io.h:312
PVOID Context
Definition: io.h:315
Definition: ketypes.h:535
Definition: btrfs_drv.h:1876
Definition: typedefs.h:120
LARGE_INTEGER AllocationSize
Definition: io.h:376
BOOLEAN Override
Definition: io.h:388
BOOLEAN DeleteOnly
Definition: io.h:390
OBJECT_ATTRIBUTES OriginalAttributes
Definition: io.h:375
PFILE_BASIC_INFORMATION BasicInformation
Definition: io.h:384
USHORT FileAttributes
Definition: io.h:378
PVOID ExtraCreateParameters
Definition: io.h:387
PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
Definition: io.h:385
USHORT ShareAccess
Definition: io.h:379
BOOLEAN FullAttributes
Definition: io.h:391
NTSTATUS FinalStatus
Definition: io.h:371
CREATE_FILE_TYPE CreateFileType
Definition: io.h:386
PDUMMY_FILE_OBJECT LocalFileObject
Definition: io.h:392
CSHORT Type
Definition: io.h:368
ULONG_PTR Information
Definition: io.h:372
ULONG InternalFlags
Definition: io.h:394
ULONG Disposition
Definition: io.h:383
PDEVICE_OBJECT TopDeviceObjectHint
Definition: io.h:395
PFILE_OBJECT FileObject
Definition: io.h:370
ULONG Options
Definition: io.h:382
BOOLEAN TraversedMountPoint
Definition: io.h:393
PFILE_OBJECT RelatedFileObject
Definition: io.h:374
ULONG ParseCheck
Definition: io.h:373
CSHORT Size
Definition: io.h:369
ULONG CreateOptions
Definition: io.h:377
PVOID EaBuffer
Definition: io.h:380
ULONG EaLength
Definition: io.h:381
BOOLEAN QueryOnly
Definition: io.h:389
volatile LONG ReserveIrpInUse
Definition: io.h:504
KEVENT WaitEvent
Definition: io.h:505
Definition: io.h:428
PDEVICE_OBJECT DeviceObject
Definition: io.h:430
LIST_ENTRY ShutdownList
Definition: io.h:429
Definition: iotypes.h:189
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char * PBOOLEAN
Definition: typedefs.h:53
INT POOL_TYPE
Definition: typedefs.h:78
#define NTAPI
Definition: typedefs.h:36
uint16_t * PUSHORT
Definition: typedefs.h:56
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char CCHAR
Definition: typedefs.h:51
short CSHORT
Definition: umtypes.h:127
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDRIVER Driver
Definition: wdfcontrol.h:83
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ WDFDEVICE _Out_ PWDF_DEVICE_STATE DeviceState
Definition: wdfdevice.h:1999
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2658
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3815
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
Definition: wdfdevice.h:3739
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
Definition: wdfdevice.h:2699
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3771
_In_ UCHAR _In_ UCHAR MinorFunction
Definition: wdfdevice.h:1699
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:215
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
Definition: wdfinterrupt.h:379
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:510
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
Definition: wdfobject.h:762
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING _In_ PCUNICODE_STRING _In_ LCID LocaleId
Definition: wdfpdo.h:437
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
Definition: wdfregistry.h:118
_Must_inspect_result_ _In_opt_ WDFKEY ParentKey
Definition: wdfregistry.h:69
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
Definition: wdfregistry.h:243
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
Definition: wdfrequest.h:639
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
Definition: wdfrequest.h:1049
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:309
_In_ WDFIORESREQLIST RequirementsList
Definition: wdfresource.h:65
_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:191
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
FAST_MUTEX
Definition: extypes.h:17
_In_opt_ PDEVICE_OBJECT _In_ ULONG _Outptr_result_nullonfailure_ _At_ * SymbolicLinkList(return==0, __drv_allocatesMem(Mem))) PZZWSTR *SymbolicLinkList
_In_ CONST GUID * InterfaceClassGuid
Definition: iofuncs.h:1136
VOID(NTAPI * PDRIVER_REINITIALIZE)(_In_ struct _DRIVER_OBJECT *DriverObject, _In_opt_ PVOID Context, _In_ ULONG Count)
Definition: iotypes.h:4455
IO_COMPLETION_ROUTINE * PIO_COMPLETION_ROUTINE
Definition: iotypes.h:2835
* PFILE_OBJECT
Definition: iotypes.h:1998
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
DRIVER_FS_NOTIFICATION * PDRIVER_FS_NOTIFICATION
Definition: iotypes.h:7361
enum _DEVICE_TEXT_TYPE DEVICE_TEXT_TYPE
enum _CREATE_FILE_TYPE CREATE_FILE_TYPE
ULONG * PPNP_DEVICE_STATE
Definition: iotypes.h:997
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
IO_WORKITEM_ROUTINE * PIO_WORKITEM_ROUTINE
Definition: iotypes.h:515
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
Definition: ketypes.h:676
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
Definition: ketypes.h:677
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
Definition: mmfuncs.h:396
_In_ KPROCESSOR_MODE PreviousMode
Definition: sefuncs.h:103
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
Definition: sefuncs.h:417
_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 GrantedAccess
Definition: sefuncs.h:20
SECURITY_OPERATION_CODE
Definition: setypes.h:170
unsigned char UCHAR
Definition: xmlstorage.h:181
char CHAR
Definition: xmlstorage.h:175
#define const
Definition: zconf.h:233