ReactOS 0.4.17-dev-812-ged4f258
iomgr.c File Reference
#include <ntoskrnl.h>
#include <debug.h>
Include dependency graph for iomgr.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

VOID NTAPI IopTimerDispatch (IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
 
BOOLEAN NTAPI WmiInitialize (VOID)
 
VOID NTAPI IopInitLookasideLists (VOID)
 
BOOLEAN NTAPI IopCreateObjectTypes (VOID)
 
BOOLEAN NTAPI IopCreateRootDirectories (VOID)
 
BOOLEAN NTAPI IopMarkBootPartition (IN PLOADER_PARAMETER_BLOCK LoaderBlock)
 
BOOLEAN NTAPI IoInitSystem (IN PLOADER_PARAMETER_BLOCK LoaderBlock)
 
BOOLEAN NTAPI IoInitializeCrashDump (IN HANDLE PageFileHandle)
 

Variables

ULONG IopTraceLevel = 0
 
BOOLEAN PnpSystemInit = FALSE
 
POBJECT_TYPE IoDeviceObjectType = NULL
 
POBJECT_TYPE IoFileObjectType = NULL
 
POBJECT_TYPE IoControllerObjectType
 
ULONG IopCaseInsensitive
 
BOOLEAN IoCountOperations = TRUE
 
ULONG IoReadOperationCount = 0
 
LARGE_INTEGER IoReadTransferCount = {{0, 0}}
 
ULONG IoWriteOperationCount = 0
 
LARGE_INTEGER IoWriteTransferCount = {{0, 0}}
 
ULONG IoOtherOperationCount = 0
 
LARGE_INTEGER IoOtherTransferCount = {{0, 0}}
 
KSPIN_LOCK IoStatisticsLock = 0
 
ULONG IopAutoReboot
 
ULONG IopNumTriageDumpDataBlocks
 
PVOID IopTriageDumpDataBlocks [64]
 
GENERIC_MAPPING IopFileMapping
 
LIST_ENTRY ShutdownListHead
 
LIST_ENTRY LastChanceShutdownListHead
 
KSPIN_LOCK ShutdownListLock
 
POBJECT_TYPE IoAdapterObjectType
 
ERESOURCE IopDatabaseResource
 
ERESOURCE IopSecurityResource
 
ERESOURCE IopDriverLoadResource
 
LIST_ENTRY IopDiskFileSystemQueueHead
 
LIST_ENTRY IopCdRomFileSystemQueueHead
 
LIST_ENTRY IopTapeFileSystemQueueHead
 
LIST_ENTRY IopNetworkFileSystemQueueHead
 
LIST_ENTRY DriverBootReinitListHead
 
LIST_ENTRY DriverReinitListHead
 
LIST_ENTRY IopFsNotifyChangeQueueHead
 
LIST_ENTRY IopErrorLogListHead
 
LIST_ENTRY IopTimerQueueHead
 
KDPC IopTimerDpc
 
KTIMER IopTimer
 
KSPIN_LOCK DriverReinitListLock
 
KSPIN_LOCK DriverBootReinitListLock
 
KSPIN_LOCK IopLogListLock
 
KSPIN_LOCK IopTimerLock
 
PDEVICE_OBJECT IopErrorLogObject
 
BOOLEAN PnPBootDriversInitialized
 
GENERAL_LOOKASIDE IoLargeIrpLookaside
 
GENERAL_LOOKASIDE IoSmallIrpLookaside
 
GENERAL_LOOKASIDE IopMdlLookasideList
 
GENERAL_LOOKASIDE IoCompletionPacketLookaside
 
PLOADER_PARAMETER_BLOCK IopLoaderBlock
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 13 of file iomgr.c.

Function Documentation

◆ IoInitializeCrashDump()

BOOLEAN NTAPI IoInitializeCrashDump ( IN HANDLE  PageFileHandle)

Definition at line 656 of file iomgr.c.

657{
659 return FALSE;
660}
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define FALSE
Definition: types.h:117

Referenced by NtCreatePagingFile().

◆ IoInitSystem()

BOOLEAN NTAPI IoInitSystem ( IN PLOADER_PARAMETER_BLOCK  LoaderBlock)

Definition at line 472 of file iomgr.c.

473{
474 LARGE_INTEGER ExpireTime;
476 CHAR Buffer[256];
477 ANSI_STRING NtBootPath, RootString;
478
479 /* Initialize empty NT Boot Path */
480 RtlInitEmptyAnsiString(&NtBootPath, Buffer, sizeof(Buffer));
481
482 /* Initialize the lookaside lists */
484
485 /* Initialize all locks and lists */
504
505 /* Initialize PnP notifications */
507
508 /* Initialize the reserve IRP */
510 {
511 DPRINT1("IopInitializeReserveIrp failed!\n");
512 return FALSE;
513 }
514
515 /* Initialize Timer List Lock */
517
518 /* Initialize Timer List */
520
521 /* Initialize the DPC/Timer which will call the other Timer Routines */
522 ExpireTime.QuadPart = -10000000;
525 KeSetTimerEx(&IopTimer, ExpireTime, 1000, &IopTimerDpc);
526
527 /* Create Object Types */
529 {
530 DPRINT1("IopCreateObjectTypes failed!\n");
531 return FALSE;
532 }
533
534 /* Create Object Directories */
536 {
537 DPRINT1("IopCreateRootDirectories failed!\n");
538 return FALSE;
539 }
540
541 /* Initialize PnP manager */
543
544 /* Initialize SHIM engine */
546
547 /* Initialize WMI */
549
550 /* Initialize HAL Root Bus Driver */
552
553 /* Reenumerate what HAL has added (synchronously)
554 * This function call should eventually become a 2nd stage of the PnP initialization */
557 NULL,
558 NULL);
559
560 /* Make loader block available for the whole kernel */
561 IopLoaderBlock = LoaderBlock;
562
563 /* Load boot start drivers */
565
566 /* Call back drivers that asked for */
568
569 /* Check if this was a ramdisk boot */
570 if (!_strnicmp(LoaderBlock->ArcBootDeviceName, "ramdisk(0)", 10))
571 {
572 /* Initialize the ramdisk driver */
573 IopStartRamdisk(LoaderBlock);
574 }
575
576 /* No one should need loader block any longer */
578
579 /* Create ARC names for boot devices */
580 Status = IopCreateArcNames(LoaderBlock);
581 if (!NT_SUCCESS(Status))
582 {
583 DPRINT1("IopCreateArcNames failed: %lx\n", Status);
584 return FALSE;
585 }
586
587 /* Mark the system boot partition */
588 if (!IopMarkBootPartition(LoaderBlock))
589 {
590 DPRINT1("IopMarkBootPartition failed!\n");
591 return FALSE;
592 }
593
594 /* The disk subsystem is initialized here and the SystemRoot is set too.
595 * We can finally load other drivers from the boot volume. */
597
598 /* Load system start drivers */
601
602 /* Reinitialize drivers that requested it */
604
605 /* Convert SystemRoot from ARC to NT path */
606 Status = IopReassignSystemRoot(LoaderBlock, &NtBootPath);
607 if (!NT_SUCCESS(Status))
608 {
609 DPRINT1("IopReassignSystemRoot failed: %lx\n", Status);
610 return FALSE;
611 }
612
613 /* Set the ANSI_STRING for the root path */
614 RootString.MaximumLength = NtSystemRoot.MaximumLength / sizeof(WCHAR);
615 RootString.Length = 0;
617 RootString.MaximumLength,
618 TAG_IO);
619
620 /* Convert the path into the ANSI_STRING */
622 if (!NT_SUCCESS(Status))
623 {
624 DPRINT1("RtlUnicodeStringToAnsiString failed: %lx\n", Status);
625 return FALSE;
626 }
627
628 /* Assign drive letters */
629 IoAssignDriveLetters(LoaderBlock,
630 &NtBootPath,
631 (PUCHAR)RootString.Buffer,
632 &RootString);
633
634 /* Update system root */
636 if (!NT_SUCCESS(Status))
637 {
638 DPRINT1("RtlAnsiStringToUnicodeString failed: %lx\n", Status);
639 return FALSE;
640 }
641
642 /* Load the System DLL and its entrypoints */
644 if (!NT_SUCCESS(Status))
645 {
646 DPRINT1("PsLocateSystemDll failed: %lx\n", Status);
647 return FALSE;
648 }
649
650 /* Return success */
651 return TRUE;
652}
LONG NTSTATUS
Definition: precomp.h:26
#define DPRINT1
Definition: precomp.h:8
VOID FASTCALL IoAssignDriveLetters(IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock, IN PSTRING NtDeviceName, OUT PUCHAR NtSystemPath, OUT PSTRING NtSystemPathString)
Definition: ntoskrnl.c:40
Definition: bufpool.h:45
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define _strnicmp(_String1, _String2, _MaxCount)
Definition: compat.h:23
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
Definition: dpc.c:712
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
NTSTATUS ExInitializeResourceLite(PULONG res)
Definition: env_spec_w32.h:641
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define KeInitializeSpinLock(sl)
Definition: env_spec_w32.h:604
#define PagedPool
Definition: env_spec_w32.h:308
Status
Definition: gdiplustypes.h:24
LIST_ENTRY IopErrorLogListHead
Definition: error.c:30
LIST_ENTRY DriverReinitListHead
Definition: driver.c:22
KDPC IopTimerDpc
Definition: iotimer.c:22
VOID NTAPI IopInitLookasideLists(VOID)
Definition: iomgr.c:101
BOOLEAN NTAPI IopCreateRootDirectories(VOID)
Definition: iomgr.c:337
LIST_ENTRY ShutdownListHead
Definition: device.c:21
ERESOURCE IopDriverLoadResource
Definition: driver.c:20
ERESOURCE IopSecurityResource
Definition: iomgr.c:67
BOOLEAN PnPBootDriversInitialized
Definition: pnpinit.c:21
BOOLEAN PnpSystemInit
Definition: iomgr.c:33
KSPIN_LOCK DriverBootReinitListLock
Definition: driver.c:28
BOOLEAN NTAPI WmiInitialize(VOID)
Definition: wmi.c:38
KSPIN_LOCK IoStatisticsLock
Definition: iomgr.c:51
BOOLEAN NTAPI IopMarkBootPartition(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: iomgr.c:402
KSPIN_LOCK IopTimerLock
Definition: iotimer.c:18
KSPIN_LOCK ShutdownListLock
Definition: device.c:22
LIST_ENTRY IopCdRomFileSystemQueueHead
Definition: volume.c:22
ERESOURCE IopDatabaseResource
Definition: volume.c:20
LIST_ENTRY DriverBootReinitListHead
Definition: driver.c:27
KSPIN_LOCK IopLogListLock
Definition: error.c:31
KSPIN_LOCK DriverReinitListLock
Definition: driver.c:23
KTIMER IopTimer
Definition: iotimer.c:23
LIST_ENTRY LastChanceShutdownListHead
Definition: device.c:21
VOID NTAPI IopTimerDispatch(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: iotimer.c:32
LIST_ENTRY IopNetworkFileSystemQueueHead
Definition: volume.c:21
LIST_ENTRY IopDiskFileSystemQueueHead
Definition: volume.c:21
PLOADER_PARAMETER_BLOCK IopLoaderBlock
Definition: iomgr.c:94
LIST_ENTRY IopFsNotifyChangeQueueHead
Definition: volume.c:23
BOOLEAN NTAPI IopCreateObjectTypes(VOID)
Definition: iomgr.c:248
LIST_ENTRY IopTimerQueueHead
Definition: iotimer.c:19
LIST_ENTRY IopTapeFileSystemQueueHead
Definition: volume.c:22
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
@ SynchronizationTimer
UNICODE_STRING NtSystemRoot
Definition: init.c:76
VOID NTAPI IopReinitializeBootDrivers(VOID)
Definition: driver.c:1547
@ PiActionEnumRootDevices
Definition: io.h:526
BOOLEAN NTAPI IopInitializeReserveIrp(IN PRESERVE_IRP_ALLOCATOR ReserveIrpAllocator)
Definition: irp.c:581
VOID FASTCALL IopInitializeSystemDrivers(VOID)
Definition: driver.c:1225
NTSTATUS NTAPI IopInitializePlugPlayServices(VOID)
Definition: pnpinit.c:287
VOID FASTCALL IopInitializeBootDrivers(VOID)
Definition: driver.c:1038
NTSTATUS NTAPI IopStartRamdisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: ramdisk.c:26
VOID NTAPI IopReinitializeDrivers(VOID)
Definition: driver.c:1511
NTSTATUS NTAPI IopReassignSystemRoot(IN PLOADER_PARAMETER_BLOCK LoaderBlock, OUT PANSI_STRING NtBootPath)
Definition: arcname.c:839
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:2668
VOID PiInitializeNotifications(VOID)
Definition: pnpnotify.c:55
PDEVICE_NODE IopRootDeviceNode
Definition: devnode.c:18
NTSTATUS NTAPI IopCreateArcNames(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: arcname.c:39
RESERVE_IRP_ALLOCATOR IopReserveIrpAllocator
Definition: irp.c:19
short WCHAR
Definition: pedump.c:58
char CHAR
Definition: pedump.c:57
NTSTATUS NTAPI ApphelpCacheInitialize(VOID)
Definition: apphelp.c:439
NTSTATUS NTAPI PsLocateSystemDll(VOID)
Definition: psmgr.c:187
USHORT MaximumLength
Definition: env_spec_w32.h:377
PDEVICE_OBJECT PhysicalDeviceObject
Definition: iotypes.h:1015
USHORT MaximumLength
Definition: env_spec_w32.h:370
#define TAG_IO
Definition: tag.h:79
BOOLEAN NTAPI KeSetTimerEx(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN LONG Period, IN PKDPC Dpc OPTIONAL)
Definition: timerobj.c:295
VOID NTAPI KeInitializeTimerEx(OUT PKTIMER Timer, IN TIMER_TYPE Type)
Definition: timerobj.c:244
unsigned char * PUCHAR
Definition: typedefs.h:53
LONGLONG QuadPart
Definition: typedefs.h:114
#define HalInitPnpDriver
Definition: haltypes.h:310

Referenced by Phase1InitializationDiscard().

◆ IopCreateObjectTypes()

BOOLEAN NTAPI IopCreateObjectTypes ( VOID  )

Definition at line 248 of file iomgr.c.

249{
250 OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
252
253 /* Initialize default settings */
254 RtlZeroMemory(&ObjectTypeInitializer, sizeof(ObjectTypeInitializer));
255 ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
256 ObjectTypeInitializer.PoolType = NonPagedPool;
257 ObjectTypeInitializer.InvalidAttributes = OBJ_OPENLINK;
258 ObjectTypeInitializer.ValidAccessMask = FILE_ALL_ACCESS;
259 ObjectTypeInitializer.UseDefaultObject = TRUE;
260 ObjectTypeInitializer.GenericMapping = IopFileMapping;
261
262 /* Do the Adapter Type */
263 RtlInitUnicodeString(&Name, L"Adapter");
265 &ObjectTypeInitializer,
266 NULL,
267 &IoAdapterObjectType))) return FALSE;
268
269 /* Do the Controller Type */
270 RtlInitUnicodeString(&Name, L"Controller");
271 ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(CONTROLLER_OBJECT);
273 &ObjectTypeInitializer,
274 NULL,
275 &IoControllerObjectType))) return FALSE;
276
277 /* Do the Device Type */
278 RtlInitUnicodeString(&Name, L"Device");
279 ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(DEVICE_OBJECT);
280 ObjectTypeInitializer.DeleteProcedure = IopDeleteDevice;
281 ObjectTypeInitializer.ParseProcedure = IopParseDevice;
282 ObjectTypeInitializer.SecurityProcedure = IopGetSetSecurityObject;
283 ObjectTypeInitializer.CaseInsensitive = TRUE;
285 &ObjectTypeInitializer,
286 NULL,
287 &IoDeviceObjectType))) return FALSE;
288
289 /* Initialize the Driver object type */
290 RtlInitUnicodeString(&Name, L"Driver");
291 ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(DRIVER_OBJECT);
292 ObjectTypeInitializer.DeleteProcedure = IopDeleteDriver;
293 ObjectTypeInitializer.ParseProcedure = NULL;
294 ObjectTypeInitializer.SecurityProcedure = NULL;
296 &ObjectTypeInitializer,
297 NULL,
298 &IoDriverObjectType))) return FALSE;
299
300 /* Initialize the I/O Completion object type */
301 RtlInitUnicodeString(&Name, L"IoCompletion");
302 ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(KQUEUE);
303 ObjectTypeInitializer.ValidAccessMask = IO_COMPLETION_ALL_ACCESS;
304 ObjectTypeInitializer.InvalidAttributes |= OBJ_PERMANENT;
305 ObjectTypeInitializer.GenericMapping = IopCompletionMapping;
306 ObjectTypeInitializer.DeleteProcedure = IopDeleteIoCompletion;
308 &ObjectTypeInitializer,
309 NULL,
310 &IoCompletionType))) return FALSE;
311
312 /* Initialize the File object type */
313 RtlInitUnicodeString(&Name, L"File");
314 ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(FILE_OBJECT);
315 ObjectTypeInitializer.InvalidAttributes |= OBJ_EXCLUSIVE;
316 ObjectTypeInitializer.MaintainHandleCount = TRUE;
317 ObjectTypeInitializer.ValidAccessMask = FILE_ALL_ACCESS;
318 ObjectTypeInitializer.GenericMapping = IopFileMapping;
319 ObjectTypeInitializer.CloseProcedure = IopCloseFile;
320 ObjectTypeInitializer.DeleteProcedure = IopDeleteFile;
321 ObjectTypeInitializer.SecurityProcedure = IopGetSetSecurityObject;
322 ObjectTypeInitializer.QueryNameProcedure = IopQueryName;
323 ObjectTypeInitializer.ParseProcedure = IopParseFile;
324 ObjectTypeInitializer.UseDefaultObject = FALSE;
326 &ObjectTypeInitializer,
327 NULL,
328 &IoFileObjectType))) return FALSE;
329
330 /* Success */
331 return TRUE;
332}
LPWSTR Name
Definition: desk.c:124
#define L(x)
Definition: resources.c:13
struct _DEVICE_OBJECT DEVICE_OBJECT
#define NonPagedPool
Definition: env_spec_w32.h:307
POBJECT_TYPE IoDeviceObjectType
Definition: iomgr.c:35
POBJECT_TYPE IoControllerObjectType
Definition: controller.c:16
GENERIC_MAPPING IopFileMapping
Definition: iomgr.c:56
POBJECT_TYPE IoFileObjectType
Definition: iomgr.c:36
POBJECT_TYPE IoAdapterObjectType
Definition: adapter.c:18
#define IO_COMPLETION_ALL_ACCESS
Definition: file.c:43
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define FILE_ALL_ACCESS
Definition: nt_native.h:651
@ FILE_OBJECT
Definition: ntobjenum.h:17
POBJECT_TYPE IoCompletionType
Definition: iocomp.c:16
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:1316
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:1924
VOID NTAPI IopDeleteDriver(IN PVOID ObjectBody)
Definition: driver.c:77
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, IN KPROCESSOR_MODE AccessMode)
VOID NTAPI IopCloseFile(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG_PTR ProcessHandleCount, IN ULONG_PTR SystemHandleCount)
Definition: file.c:2177
VOID NTAPI IopDeleteDevice(IN PVOID ObjectBody)
Definition: device.c:52
VOID NTAPI IopDeleteIoCompletion(PVOID ObjectBody)
Definition: iocomp.c:100
GENERIC_MAPPING IopCompletionMapping
Definition: iocomp.c:20
VOID NTAPI IopDeleteFile(IN PVOID ObjectBody)
Definition: file.c:1352
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:321
POBJECT_TYPE IoDriverObjectType
Definition: driver.c:34
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
Definition: oblife.c:1137
#define OBJ_OPENLINK
Definition: winternl.h:230
#define OBJ_EXCLUSIVE
Definition: winternl.h:227
#define OBJ_PERMANENT
Definition: winternl.h:226
OB_CLOSE_METHOD CloseProcedure
Definition: obtypes.h:389
OB_SECURITY_METHOD SecurityProcedure
Definition: obtypes.h:392
GENERIC_MAPPING GenericMapping
Definition: obtypes.h:379
OB_DELETE_METHOD DeleteProcedure
Definition: obtypes.h:390
BOOLEAN MaintainHandleCount
Definition: obtypes.h:382
OB_QUERYNAME_METHOD QueryNameProcedure
Definition: obtypes.h:393
OB_PARSE_METHOD ParseProcedure
Definition: obtypes.h:391
ULONG DefaultNonPagedPoolCharge
Definition: obtypes.h:386
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
struct _DRIVER_OBJECT DRIVER_OBJECT
struct _CONTROLLER_OBJECT CONTROLLER_OBJECT
struct _KQUEUE KQUEUE

Referenced by IoInitSystem().

◆ IopCreateRootDirectories()

BOOLEAN NTAPI IopCreateRootDirectories ( VOID  )

Definition at line 337 of file iomgr.c.

338{
343
344 /* Create the '\Driver' object directory */
345 RtlInitUnicodeString(&DirName, L"\\Driver");
347 &DirName,
349 NULL,
350 NULL);
354 if (!NT_SUCCESS(Status))
355 {
356 DPRINT1("Failed to create \\Driver directory: 0x%lx\n", Status);
357 return FALSE;
358 }
360
361 /* Create the '\FileSystem' object directory */
362 RtlInitUnicodeString(&DirName, L"\\FileSystem");
364 &DirName,
366 NULL,
367 NULL);
371 if (!NT_SUCCESS(Status))
372 {
373 DPRINT1("Failed to create \\FileSystem directory: 0x%lx\n", Status);
374 return FALSE;
375 }
377
378 /* Create the '\FileSystem' object directory */
379 RtlInitUnicodeString(&DirName, L"\\FileSystem\\Filters");
381 &DirName,
383 NULL,
384 NULL);
388 if (!NT_SUCCESS(Status))
389 {
390 DPRINT1("Failed to create \\FileSystem\\Filters directory: 0x%lx\n", Status);
391 return FALSE;
392 }
394
395 /* Return success */
396 return TRUE;
397}
_In_ PFCB _In_ PCD_NAME DirName
Definition: cdprocs.h:737
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
ULONG Handle
Definition: gdb_input.c:15
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:115
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3429
#define DIRECTORY_ALL_ACCESS
Definition: nt_native.h:1262
NTSTATUS NTAPI NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: obdir.c:765

Referenced by IoInitSystem().

◆ IopInitLookasideLists()

VOID NTAPI IopInitLookasideLists ( VOID  )

Definition at line 101 of file iomgr.c.

102{
103 ULONG LargeIrpSize, SmallIrpSize, MdlSize;
104 LONG i;
105 PKPRCB Prcb;
106 PGENERAL_LOOKASIDE CurrentList = NULL;
107
108 /* Calculate the sizes */
109 LargeIrpSize = sizeof(IRP) + (8 * sizeof(IO_STACK_LOCATION));
110 SmallIrpSize = sizeof(IRP) + sizeof(IO_STACK_LOCATION);
111 MdlSize = sizeof(MDL) + (23 * sizeof(PFN_NUMBER));
112
113 /* Initialize the Lookaside List for I\O Completion */
117 IOC_TAG1,
118 32,
120
121 /* Initialize the Lookaside List for Large IRPs */
124 LargeIrpSize,
126 64,
128
129
130 /* Initialize the Lookaside List for Small IRPs */
133 SmallIrpSize,
135 32,
137
138 /* Initialize the Lookaside List for MDLs */
141 MdlSize,
142 TAG_MDL,
143 128,
145
146 /* Allocate the global lookaside list buffer */
149 sizeof(GENERAL_LOOKASIDE),
150 TAG_IO);
151
152 /* Loop all processors */
153 for (i = 0; i < KeNumberProcessors; i++)
154 {
155 /* Get the PRCB for this CPU */
156 Prcb = KiProcessorBlock[i];
157 DPRINT("Setting up lookaside for CPU: %x, PRCB: %p\n", i, Prcb);
158
159 /* Write IRP credit limit */
161
162 /* Set the I/O Completion List */
164 if (CurrentList)
165 {
166 /* Initialize the Lookaside List for mini-packets */
171 32,
173 Prcb->PPLookasideList[LookasideCompletionList].P = CurrentList;
174 CurrentList++;
175
176 }
177 else
178 {
180 }
181
182 /* Set the Large IRP List */
184 if (CurrentList)
185 {
186 /* Initialize the Lookaside List for Large IRPs */
189 LargeIrpSize,
191 64,
193 Prcb->PPLookasideList[LookasideLargeIrpList].P = CurrentList;
194 CurrentList++;
195
196 }
197 else
198 {
200 }
201
202 /* Set the Small IRP List */
204 if (CurrentList)
205 {
206 /* Initialize the Lookaside List for Small IRPs */
209 SmallIrpSize,
211 32,
213 Prcb->PPLookasideList[LookasideSmallIrpList].P = CurrentList;
214 CurrentList++;
215
216 }
217 else
218 {
220 }
221
222 /* Set the MDL Completion List */
224 if (CurrentList)
225 {
226 /* Initialize the Lookaside List for MDLs */
229 SmallIrpSize,
230 TAG_MDL,
231 128,
233
234 Prcb->PPLookasideList[LookasideMdlList].P = CurrentList;
235 CurrentList++;
236
237 }
238 else
239 {
241 }
242 }
243}
struct _IRP IRP
ULONG_PTR PFN_NUMBER
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GENERAL_LOOKASIDE IoLargeIrpLookaside
Definition: iomgr.c:89
GENERAL_LOOKASIDE IoSmallIrpLookaside
Definition: iomgr.c:90
GENERAL_LOOKASIDE IoCompletionPacketLookaside
Definition: iocomp.c:18
GENERAL_LOOKASIDE IopMdlLookasideList
Definition: iomgr.c:91
VOID NTAPI ExInitializeSystemLookasideList(IN PGENERAL_LOOKASIDE List, IN POOL_TYPE Type, IN ULONG Size, IN ULONG Tag, IN USHORT MaximumDepth, IN PLIST_ENTRY ListHead)
Definition: lookas.c:31
LIST_ENTRY ExSystemLookasideListHead
Definition: lookas.c:21
@ LookasideLargeIrpList
Definition: mmtypes.h:169
@ LookasideCompletionList
Definition: mmtypes.h:174
@ LookasideMdlList
Definition: mmtypes.h:170
@ LookasideSmallIrpList
Definition: mmtypes.h:168
PKPRCB KiProcessorBlock[]
Definition: krnlinit.c:31
CCHAR KeNumberProcessors
Definition: processor.c:19
long LONG
Definition: pedump.c:60
#define DPRINT
Definition: sndvol32.h:73
PP_LOOKASIDE_LIST PPLookasideList[16]
Definition: ketypes.h:728
LONG LookasideIrpFloat
Definition: ketypes.h:759
struct _GENERAL_LOOKASIDE * P
Definition: ketypes.h:1015
struct _GENERAL_LOOKASIDE * L
Definition: ketypes.h:1016
#define IO_SMALLIRP_CPU
Definition: tag.h:75
#define IO_LARGEIRP
Definition: tag.h:72
#define IO_SMALLIRP
Definition: tag.h:73
#define TAG_MDL
Definition: tag.h:88
#define IO_LARGEIRP_CPU
Definition: tag.h:74
#define IOC_TAG1
Definition: tag.h:76
uint32_t ULONG
Definition: typedefs.h:59
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE * PGENERAL_LOOKASIDE
MDL
Definition: mmtypes.h:117

Referenced by IoInitSystem().

◆ IopMarkBootPartition()

BOOLEAN NTAPI IopMarkBootPartition ( IN PLOADER_PARAMETER_BLOCK  LoaderBlock)

Definition at line 402 of file iomgr.c.

403{
405 STRING DeviceString;
406 CHAR Buffer[256];
412
413 /* Build the ARC device name */
414 sprintf(Buffer, "\\ArcName\\%s", LoaderBlock->ArcBootDeviceName);
415 RtlInitAnsiString(&DeviceString, Buffer);
417 if (!NT_SUCCESS(Status)) return FALSE;
418
419 /* Open it */
421 &DeviceName,
423 NULL,
424 NULL);
429 0,
431 if (!NT_SUCCESS(Status))
432 {
433 /* Fail */
434 KeBugCheckEx(INACCESSIBLE_BOOT_DEVICE,
436 Status,
437 0,
438 0);
439 }
440
441 /* Get the DO */
443 0,
446 (PVOID *)&FileObject,
447 NULL);
448 if (!NT_SUCCESS(Status))
449 {
450 /* Fail */
452 return FALSE;
453 }
454
455 /* Mark it as the boot partition */
456 FileObject->DeviceObject->Flags |= DO_SYSTEM_BOOT_PARTITION;
457
458 /* Save a copy of the DO for the I/O Error Logger */
459 ObReferenceObject(FileObject->DeviceObject);
460 IopErrorLogObject = FileObject->DeviceObject;
461
462 /* Cleanup and return success */
466 return TRUE;
467}
#define FILE_NON_DIRECTORY_FILE
Definition: constants.h:492
DECLSPEC_NORETURN VOID NTAPI KeBugCheckEx(IN ULONG BugCheckCode, IN ULONG_PTR BugCheckParameter1, IN ULONG_PTR BugCheckParameter2, IN ULONG_PTR BugCheckParameter3, IN ULONG_PTR BugCheckParameter4)
Definition: debug.c:485
_In_ PIO_STATUS_BLOCK IoStatusBlock
Definition: dispmprt.h:608
#define DO_SYSTEM_BOOT_PARTITION
Definition: env_spec_w32.h:400
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
Definition: fltkernel.h:1231
std::wstring STRING
Definition: fontsub.cpp:33
PDEVICE_OBJECT IopErrorLogObject
Definition: error.c:38
#define sprintf
Definition: sprintf.c:45
#define KernelMode
Definition: asm.h:38
NTSYSAPI NTSTATUS NTAPI ZwOpenFile(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG ShareAccess, _In_ ULONG OpenOptions)
#define FILE_READ_ATTRIBUTES
Definition: nt_native.h:647
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
Definition: obref.c:493
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
uint32_t ULONG_PTR
Definition: typedefs.h:65
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3281
* PFILE_OBJECT
Definition: iotypes.h:1998
#define ObDereferenceObject
Definition: obfuncs.h:203
#define ObReferenceObject
Definition: obfuncs.h:204

Referenced by IoInitSystem().

◆ IopTimerDispatch()

VOID NTAPI IopTimerDispatch ( IN PKDPC  Dpc,
IN PVOID  DeferredContext,
IN PVOID  SystemArgument1,
IN PVOID  SystemArgument2 
)

Definition at line 32 of file iotimer.c.

36{
38 PLIST_ENTRY TimerEntry;
40 ULONG i;
41
42 /* Check if any Timers are actually enabled as of now */
43 if (IopTimerCount)
44 {
45 /* Lock the Timers */
47
48 /* Call the Timer Routine of each enabled Timer */
49 for (TimerEntry = IopTimerQueueHead.Flink, i = IopTimerCount;
50 (TimerEntry != &IopTimerQueueHead) && i;
51 TimerEntry = TimerEntry->Flink)
52 {
53 /* Get the timer and check if it's enabled */
54 Timer = CONTAINING_RECORD(TimerEntry, IO_TIMER, IoTimerList);
55 if (Timer->TimerEnabled)
56 {
57 /* Call the timer routine */
58 Timer->TimerRoutine(Timer->DeviceObject, Timer->Context);
59 i--;
60 }
61 }
62
63 /* Unlock the Timers */
65 }
66}
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define KeReleaseSpinLock(sl, irql)
Definition: env_spec_w32.h:627
#define KeAcquireSpinLock(sl, irql)
Definition: env_spec_w32.h:609
KSPIN_LOCK IopTimerLock
Definition: iotimer.c:18
ULONG IopTimerCount
Definition: iotimer.c:26
LIST_ENTRY IopTimerQueueHead
Definition: iotimer.c:19
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Definition: kefuncs.h:778

Referenced by IoInitSystem().

◆ WmiInitialize()

BOOLEAN NTAPI WmiInitialize ( VOID  )

Definition at line 38 of file wmi.c.

40{
41 UNICODE_STRING DriverName = RTL_CONSTANT_STRING(L"\\Driver\\WMIxWDM");
43
44 /* Initialize the GUID object type */
46 if (!NT_SUCCESS(Status))
47 {
48 DPRINT1("WmipInitializeGuidObjectType() failed: 0x%lx\n", Status);
49 return FALSE;
50 }
51
52 /* Create the WMI driver */
53 Status = IoCreateDriver(&DriverName, WmipDriverEntry);
54 if (!NT_SUCCESS(Status))
55 {
56 DPRINT1("Failed to create WMI driver: 0x%lx\n", Status);
57 return FALSE;
58 }
59
60 return TRUE;
61}
#define RTL_CONSTANT_STRING(s)
Definition: combase.c:35
NTSTATUS NTAPI WmipInitializeGuidObjectType(VOID)
Definition: guidobj.c:114
NTSTATUS NTAPI IoCreateDriver(_In_opt_ PUNICODE_STRING DriverName, _In_ PDRIVER_INITIALIZE InitializationFunction)
Definition: driver.c:1591

Referenced by IoInitSystem().

Variable Documentation

◆ DriverBootReinitListHead

LIST_ENTRY DriverBootReinitListHead
extern

◆ DriverBootReinitListLock

KSPIN_LOCK DriverBootReinitListLock
extern

◆ DriverReinitListHead

LIST_ENTRY DriverReinitListHead
extern

Definition at line 22 of file driver.c.

Referenced by IoInitSystem(), IopReinitializeDrivers(), and IoRegisterDriverReinitialization().

◆ DriverReinitListLock

KSPIN_LOCK DriverReinitListLock
extern

Definition at line 23 of file driver.c.

Referenced by IoInitSystem(), IopReinitializeDrivers(), and IoRegisterDriverReinitialization().

◆ IoAdapterObjectType

POBJECT_TYPE IoAdapterObjectType
extern

Definition at line 18 of file adapter.c.

Referenced by IopCreateObjectTypes().

◆ IoCompletionPacketLookaside

GENERAL_LOOKASIDE IoCompletionPacketLookaside
extern

Definition at line 18 of file iocomp.c.

Referenced by IopInitLookasideLists().

◆ IoControllerObjectType

POBJECT_TYPE IoControllerObjectType
extern

Definition at line 16 of file controller.c.

Referenced by IoCreateController(), and IopCreateObjectTypes().

◆ IoCountOperations

BOOLEAN IoCountOperations = TRUE

Definition at line 44 of file iomgr.c.

Referenced by IopUpdateOperationCount(), and IopUpdateTransferCount().

◆ IoDeviceObjectType

POBJECT_TYPE IoDeviceObjectType = NULL

◆ IoFileObjectType

POBJECT_TYPE IoFileObjectType = NULL

Definition at line 36 of file iomgr.c.

Referenced by add_device(), AfdBindSocket(), BasicBehaviorChecks(), CompBattGetDeviceObjectPointer(), Control(), create_snapshot(), CreateGreenFdo(), CreateMixerPinAndSetFormat(), DispTdiAssociateAddress(), duplicate_extents(), Ext2InvalidateVolumes(), IKsPin_PinMasterClock(), invalidate_volumes(), IoCheckDesiredAccess(), IoComputeDesiredAccessFileObject(), IoCreateStreamFileObjectEx(), IoCreateStreamFileObjectLite(), IopCreateObjectTypes(), IopDeviceFsIoControl(), IopGetDeviceObjectPointer(), IopMarkBootPartition(), IopOpenLinkOrRenameTarget(), IopParseDevice(), KernelModeTest(), MmCreateArm3Section(), MmCreateSection(), MountMgrVolumeMountPointChanged(), NtCancelIoFile(), NtCreatePagingFile(), NtFlushBuffersFile(), NtLoadKeyEx(), NtLockFile(), NtNotifyChangeDirectoryFile(), NtQueryDirectoryFile(), NtQueryInformationFile(), NtQueryVolumeInformationFile(), NtReadFile(), NtSaveKeyEx(), NtSaveMergedKeys(), NtSetInformationFile(), NtSetVolumeInformationFile(), NtUnlockFile(), ObpLookupObjectName(), OpenDevice(), FxIoTargetRemote::OpenTargetHandle(), Pin_fnDeviceIoControl(), Pin_fnWrite(), PopAddRemoveSysCapsCallback(), send_subvol(), START_TEST(), TdiOpenDevice(), TestIoCreateFile(), TestObjectTypes(), TestProviderInfo(), TestSharedCacheMap(), TestSymlinks(), TestTcpConnect(), UDFInvalidateVolumes(), VfatSetRenameInformation(), WdmAudControlDeviceState(), WdmAudFrameSize(), WdmAudOpenSysAudioDevices(), WdmAudReadWrite(), and WdmAudResetStream().

◆ IoLargeIrpLookaside

GENERAL_LOOKASIDE IoLargeIrpLookaside

Definition at line 89 of file iomgr.c.

Referenced by IopInitLookasideLists().

◆ IoOtherOperationCount

ULONG IoOtherOperationCount = 0

Definition at line 49 of file iomgr.c.

Referenced by IopUpdateOperationCount(), and QSI_DEF().

◆ IoOtherTransferCount

LARGE_INTEGER IoOtherTransferCount = {{0, 0}}

Definition at line 50 of file iomgr.c.

Referenced by IopUpdateTransferCount(), and QSI_DEF().

◆ IopAutoReboot

ULONG IopAutoReboot

Definition at line 52 of file iomgr.c.

Referenced by KeBugCheckWithTf().

◆ IopCaseInsensitive

ULONG IopCaseInsensitive
Initial value:
=

Definition at line 38 of file iomgr.c.

Referenced by IoCreateController(), IoCreateDevice(), IopGetDeviceObjectPointer(), and IopInitializeDriverModule().

◆ IopCdRomFileSystemQueueHead

LIST_ENTRY IopCdRomFileSystemQueueHead
extern

◆ IopDatabaseResource

◆ IopDiskFileSystemQueueHead

LIST_ENTRY IopDiskFileSystemQueueHead
extern

◆ IopDriverLoadResource

ERESOURCE IopDriverLoadResource
extern

Definition at line 20 of file driver.c.

Referenced by IoInitSystem().

◆ IopErrorLogListHead

LIST_ENTRY IopErrorLogListHead
extern

Definition at line 30 of file error.c.

Referenced by IoInitSystem(), IopGetErrorLogEntry(), IopLogWorker(), and IoWriteErrorLogEntry().

◆ IopErrorLogObject

PDEVICE_OBJECT IopErrorLogObject
extern

Definition at line 38 of file error.c.

Referenced by IopMarkBootPartition().

◆ IopFileMapping

GENERIC_MAPPING IopFileMapping
Initial value:
= {
#define FILE_GENERIC_EXECUTE
Definition: nt_native.h:668
#define FILE_GENERIC_READ
Definition: nt_native.h:653
#define FILE_GENERIC_WRITE
Definition: nt_native.h:660

Definition at line 56 of file iomgr.c.

Referenced by IoGetFileObjectGenericMapping(), and IopCreateObjectTypes().

◆ IopFsNotifyChangeQueueHead

◆ IopLoaderBlock

PLOADER_PARAMETER_BLOCK IopLoaderBlock

Definition at line 94 of file iomgr.c.

Referenced by IoGetBootDiskInformation(), and IoInitSystem().

◆ IopLogListLock

KSPIN_LOCK IopLogListLock
extern

Definition at line 31 of file error.c.

Referenced by IoInitSystem(), IopGetErrorLogEntry(), IopLogWorker(), and IoWriteErrorLogEntry().

◆ IopMdlLookasideList

GENERAL_LOOKASIDE IopMdlLookasideList

Definition at line 91 of file iomgr.c.

Referenced by IopInitLookasideLists().

◆ IopNetworkFileSystemQueueHead

LIST_ENTRY IopNetworkFileSystemQueueHead
extern

Definition at line 21 of file volume.c.

Referenced by IoInitSystem(), IoRegisterFileSystem(), and IoRegisterFsRegistrationChange().

◆ IopNumTriageDumpDataBlocks

ULONG IopNumTriageDumpDataBlocks

Definition at line 53 of file iomgr.c.

◆ IopSecurityResource

ERESOURCE IopSecurityResource

◆ IopTapeFileSystemQueueHead

LIST_ENTRY IopTapeFileSystemQueueHead
extern

◆ IopTimer

KTIMER IopTimer
extern

Definition at line 23 of file iotimer.c.

Referenced by IoInitSystem().

◆ IopTimerDpc

KDPC IopTimerDpc
extern

Definition at line 22 of file iotimer.c.

Referenced by IoInitSystem().

◆ IopTimerLock

◆ IopTimerQueueHead

LIST_ENTRY IopTimerQueueHead
extern

Definition at line 19 of file iotimer.c.

Referenced by IoInitializeTimer(), IoInitSystem(), and IopTimerDispatch().

◆ IopTraceLevel

ULONG IopTraceLevel = 0

Definition at line 32 of file iomgr.c.

◆ IopTriageDumpDataBlocks

PVOID IopTriageDumpDataBlocks[64]

Definition at line 54 of file iomgr.c.

◆ IoReadOperationCount

ULONG IoReadOperationCount = 0

Definition at line 45 of file iomgr.c.

Referenced by IopUpdateOperationCount(), and QSI_DEF().

◆ IoReadTransferCount

LARGE_INTEGER IoReadTransferCount = {{0, 0}}

Definition at line 46 of file iomgr.c.

Referenced by IopUpdateTransferCount(), and QSI_DEF().

◆ IoSmallIrpLookaside

GENERAL_LOOKASIDE IoSmallIrpLookaside

Definition at line 90 of file iomgr.c.

Referenced by IopInitLookasideLists().

◆ IoStatisticsLock

KSPIN_LOCK IoStatisticsLock = 0

Definition at line 51 of file iomgr.c.

Referenced by IoInitSystem().

◆ IoWriteOperationCount

ULONG IoWriteOperationCount = 0

Definition at line 47 of file iomgr.c.

Referenced by IopUpdateOperationCount(), and QSI_DEF().

◆ IoWriteTransferCount

LARGE_INTEGER IoWriteTransferCount = {{0, 0}}

Definition at line 48 of file iomgr.c.

Referenced by IopUpdateTransferCount(), and QSI_DEF().

◆ LastChanceShutdownListHead

LIST_ENTRY LastChanceShutdownListHead
extern

◆ PnPBootDriversInitialized

BOOLEAN PnPBootDriversInitialized
extern

Definition at line 21 of file pnpinit.c.

Referenced by IoInitSystem().

◆ PnpSystemInit

BOOLEAN PnpSystemInit = FALSE

Definition at line 33 of file iomgr.c.

Referenced by IoInitSystem(), and IopInitializeDriverModule().

◆ ShutdownListHead

LIST_ENTRY ShutdownListHead
extern

◆ ShutdownListLock