ReactOS  0.4.13-dev-100-gc8611ae
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 INIT_FUNCTION NTAPI IopInitLookasideLists (VOID)
 
BOOLEAN INIT_FUNCTION NTAPI IopCreateObjectTypes (VOID)
 
BOOLEAN INIT_FUNCTION NTAPI IopCreateRootDirectories (VOID)
 
BOOLEAN INIT_FUNCTION NTAPI IopMarkBootPartition (IN PLOADER_PARAMETER_BLOCK LoaderBlock)
 
BOOLEAN INIT_FUNCTION 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
 
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 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
 
KGUARDED_MUTEX PnpNotifyListLock
 
LIST_ENTRY IopDiskFileSystemQueueHead
 
LIST_ENTRY IopCdRomFileSystemQueueHead
 
LIST_ENTRY IopTapeFileSystemQueueHead
 
LIST_ENTRY IopNetworkFileSystemQueueHead
 
LIST_ENTRY DriverBootReinitListHead
 
LIST_ENTRY DriverReinitListHead
 
LIST_ENTRY PnpNotifyListHead
 
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
 
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: debug.h:114

Referenced by NtCreatePagingFile().

◆ IoInitSystem()

BOOLEAN INIT_FUNCTION NTAPI IoInitSystem ( IN PLOADER_PARAMETER_BLOCK  LoaderBlock)

Definition at line 470 of file iomgr.c.

471 {
472  LARGE_INTEGER ExpireTime;
474  CHAR Buffer[256];
475  ANSI_STRING NtBootPath, RootString;
476 
477  /* Initialize empty NT Boot Path */
478  RtlInitEmptyAnsiString(&NtBootPath, Buffer, sizeof(Buffer));
479 
480  /* Initialize the lookaside lists */
482 
483  /* Initialize all locks and lists */
504 
505  /* Initialize the reserve IRP */
507  {
508  DPRINT1("IopInitializeReserveIrp failed!\n");
509  return FALSE;
510  }
511 
512  /* Initialize Timer List Lock */
514 
515  /* Initialize Timer List */
517 
518  /* Initialize the DPC/Timer which will call the other Timer Routines */
519  ExpireTime.QuadPart = -10000000;
522  KeSetTimerEx(&IopTimer, ExpireTime, 1000, &IopTimerDpc);
523 
524  /* Create Object Types */
525  if (!IopCreateObjectTypes())
526  {
527  DPRINT1("IopCreateObjectTypes failed!\n");
528  return FALSE;
529  }
530 
531  /* Create Object Directories */
533  {
534  DPRINT1("IopCreateRootDirectories failed!\n");
535  return FALSE;
536  }
537 
538  /* Initialize PnP manager */
540 
541  /* Initialize SHIM engine */
543 
544  /* Initialize WMI */
545  WmiInitialize();
546 
547  /* Initialize HAL Root Bus Driver */
549 
550  /* Make loader block available for the whole kernel */
551  IopLoaderBlock = LoaderBlock;
552 
553  /* Load boot start drivers */
555 
556  /* Call back drivers that asked for */
558 
559  /* Check if this was a ramdisk boot */
560  if (!_strnicmp(LoaderBlock->ArcBootDeviceName, "ramdisk(0)", 10))
561  {
562  /* Initialize the ramdisk driver */
563  IopStartRamdisk(LoaderBlock);
564  }
565 
566  /* No one should need loader block any longer */
568 
569  /* Create ARC names for boot devices */
570  Status = IopCreateArcNames(LoaderBlock);
571  if (!NT_SUCCESS(Status))
572  {
573  DPRINT1("IopCreateArcNames failed: %lx\n", Status);
574  return FALSE;
575  }
576 
577  /* Mark the system boot partition */
578  if (!IopMarkBootPartition(LoaderBlock))
579  {
580  DPRINT1("IopMarkBootPartition failed!\n");
581  return FALSE;
582  }
583 
584  /* Initialize PnP root relations */
586 
587 #ifndef _WINKD_
588  /* Read KDB Data */
589  KdbInit();
590 
591  /* I/O is now setup for disk access, so phase 3 */
592  KdInitSystem(3, LoaderBlock);
593 #endif
594 
595  /* Load services for devices found by PnP manager */
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 }
ERESOURCE IopDatabaseResource
Definition: volume.c:25
ERESOURCE IopSecurityResource
Definition: iomgr.c:60
LIST_ENTRY DriverBootReinitListHead
Definition: driver.c:26
#define TRUE
Definition: types.h:120
KSPIN_LOCK DriverBootReinitListLock
Definition: driver.c:27
PDEVICE_OBJECT PhysicalDeviceObject
Definition: iotypes.h:839
PDEVICE_NODE IopRootDeviceNode
Definition: pnpmgr.c:18
NTSTATUS IopInitializePnpServices(IN PDEVICE_NODE DeviceNode)
Definition: pnpmgr.c:3083
#define TAG_IO
Definition: tag.h:69
UNICODE_STRING NtSystemRoot
Definition: init.c:72
LIST_ENTRY IopCdRomFileSystemQueueHead
Definition: volume.c:27
KTIMER IopTimer
Definition: iotimer.c:23
VOID NTAPI IopReinitializeDrivers(VOID)
Definition: driver.c:1389
VOID FASTCALL IoAssignDriveLetters(IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock, IN PSTRING NtDeviceName, OUT PUCHAR NtSystemPath, OUT PSTRING NtSystemPathString)
Definition: ntoskrnl.c:54
USHORT MaximumLength
Definition: env_spec_w32.h:370
unsigned char * PUCHAR
Definition: retypes.h:3
char CHAR
Definition: xmlstorage.h:175
LIST_ENTRY IopTimerQueueHead
Definition: iotimer.c:19
LONG NTSTATUS
Definition: precomp.h:26
VOID NTAPI IopReinitializeBootDrivers(VOID)
Definition: driver.c:1425
NTSTATUS ExInitializeResourceLite(PULONG res)
Definition: env_spec_w32.h:641
RESERVE_IRP_ALLOCATOR IopReserveIrpAllocator
Definition: irp.c:19
BOOLEAN NTAPI KeSetTimerEx(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN LONG Period, IN PKDPC Dpc OPTIONAL)
Definition: timerobj.c:294
INIT_FUNCTION NTSTATUS NTAPI PsLocateSystemDll(VOID)
Definition: psmgr.c:279
INIT_FUNCTION NTSTATUS NTAPI IopStartRamdisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: ramdisk.c:28
BOOLEAN PnpSystemInit
Definition: iomgr.c:17
INIT_FUNCTION NTSTATUS NTAPI ApphelpCacheInitialize(VOID)
Definition: apphelp.c:440
ERESOURCE IopDriverLoadResource
Definition: driver.c:19
_Check_return_ _CRTIMP int __cdecl _strnicmp(_In_reads_or_z_(_MaxCount) const char *_Str1, _In_reads_or_z_(_MaxCount) const char *_Str2, _In_ size_t _MaxCount)
INIT_FUNCTION NTSTATUS NTAPI IopInitializePlugPlayServices(VOID)
Definition: pnpinit.c:380
LIST_ENTRY IopTapeFileSystemQueueHead
Definition: volume.c:27
BOOLEAN NTAPI IopInitializeReserveIrp(IN PRESERVE_IRP_ALLOCATOR ReserveIrpAllocator)
Definition: irp.c:549
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
Definition: kefuncs.h:251
LIST_ENTRY IopNetworkFileSystemQueueHead
Definition: volume.c:26
BOOLEAN NTAPI WmiInitialize(VOID)
Definition: wmi.c:38
LIST_ENTRY DriverReinitListHead
Definition: driver.c:21
KGUARDED_MUTEX PnpNotifyListLock
Definition: pnpnotify.c:30
smooth NULL
Definition: ftsmooth.c:416
VOID INIT_FUNCTION NTAPI IopInitLookasideLists(VOID)
Definition: iomgr.c:99
INIT_FUNCTION VOID FASTCALL IopInitializeSystemDrivers(VOID)
Definition: driver.c:1126
Definition: bufpool.h:45
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
KDPC IopTimerDpc
Definition: iotimer.c:22
INIT_FUNCTION VOID FASTCALL IopInitializeBootDrivers(VOID)
Definition: driver.c:930
NTSTATUS IopEnumerateDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: pnpmgr.c:2652
LIST_ENTRY IopDiskFileSystemQueueHead
Definition: volume.c:26
BOOLEAN INIT_FUNCTION NTAPI IopMarkBootPartition(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: iomgr.c:400
USHORT MaximumLength
Definition: env_spec_w32.h:377
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
INIT_FUNCTION NTSTATUS NTAPI IopReassignSystemRoot(IN PLOADER_PARAMETER_BLOCK LoaderBlock, OUT PANSI_STRING NtBootPath)
Definition: arcname.c:837
LIST_ENTRY PnpNotifyListHead
Definition: pnpnotify.c:31
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
KSPIN_LOCK DriverReinitListLock
Definition: driver.c:22
PLOADER_PARAMETER_BLOCK IopLoaderBlock
Definition: iomgr.c:88
Status
Definition: gdiplustypes.h:24
KSPIN_LOCK IopLogListLock
Definition: error.c:31
KSPIN_LOCK IopTimerLock
Definition: iotimer.c:18
VOID FASTCALL KeInitializeGuardedMutex(OUT PKGUARDED_MUTEX GuardedMutex)
Definition: gmutex.c:31
BOOLEAN NTAPI KdInitSystem(ULONG Reserved, PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: kdinit.c:174
BOOLEAN INIT_FUNCTION NTAPI IopCreateObjectTypes(VOID)
Definition: iomgr.c:246
VOID NTAPI IopTimerDispatch(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
Definition: iotimer.c:32
INIT_FUNCTION NTSTATUS NTAPI IopCreateArcNames(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Definition: arcname.c:42
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
KSPIN_LOCK IoStatisticsLock
Definition: iomgr.c:45
#define DPRINT1
Definition: precomp.h:8
KSPIN_LOCK ShutdownListLock
Definition: device.c:22
BOOLEAN INIT_FUNCTION NTAPI IopCreateRootDirectories(VOID)
Definition: iomgr.c:335
LIST_ENTRY IopFsNotifyChangeQueueHead
Definition: volume.c:28
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
Definition: dpc.c:711
LIST_ENTRY IopErrorLogListHead
Definition: error.c:30
LIST_ENTRY ShutdownListHead
Definition: device.c:21
#define HalInitPnpDriver
Definition: haltypes.h:289
LIST_ENTRY LastChanceShutdownListHead
Definition: device.c:21
VOID NTAPI KeInitializeTimerEx(OUT PKTIMER Timer, IN TIMER_TYPE Type)
Definition: timerobj.c:244
LONGLONG QuadPart
Definition: typedefs.h:112

Referenced by Phase1InitializationDiscard().

◆ IopCreateObjectTypes()

BOOLEAN INIT_FUNCTION NTAPI IopCreateObjectTypes ( VOID  )

Definition at line 246 of file iomgr.c.

247 {
248  OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
250 
251  /* Initialize default settings */
252  RtlZeroMemory(&ObjectTypeInitializer, sizeof(ObjectTypeInitializer));
253  ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
254  ObjectTypeInitializer.PoolType = NonPagedPool;
255  ObjectTypeInitializer.InvalidAttributes = OBJ_OPENLINK;
256  ObjectTypeInitializer.ValidAccessMask = FILE_ALL_ACCESS;
257  ObjectTypeInitializer.UseDefaultObject = TRUE;
258  ObjectTypeInitializer.GenericMapping = IopFileMapping;
259 
260  /* Do the Adapter Type */
261  RtlInitUnicodeString(&Name, L"Adapter");
263  &ObjectTypeInitializer,
264  NULL,
265  &IoAdapterObjectType))) return FALSE;
266 
267  /* Do the Controller Type */
268  RtlInitUnicodeString(&Name, L"Controller");
269  ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(CONTROLLER_OBJECT);
271  &ObjectTypeInitializer,
272  NULL,
273  &IoControllerObjectType))) return FALSE;
274 
275  /* Do the Device Type */
276  RtlInitUnicodeString(&Name, L"Device");
277  ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(DEVICE_OBJECT);
278  ObjectTypeInitializer.DeleteProcedure = IopDeleteDevice;
279  ObjectTypeInitializer.ParseProcedure = IopParseDevice;
280  ObjectTypeInitializer.SecurityProcedure = IopGetSetSecurityObject;
281  ObjectTypeInitializer.CaseInsensitive = TRUE;
283  &ObjectTypeInitializer,
284  NULL,
285  &IoDeviceObjectType))) return FALSE;
286 
287  /* Initialize the Driver object type */
288  RtlInitUnicodeString(&Name, L"Driver");
289  ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(DRIVER_OBJECT);
290  ObjectTypeInitializer.DeleteProcedure = IopDeleteDriver;
291  ObjectTypeInitializer.ParseProcedure = NULL;
292  ObjectTypeInitializer.SecurityProcedure = NULL;
294  &ObjectTypeInitializer,
295  NULL,
296  &IoDriverObjectType))) return FALSE;
297 
298  /* Initialize the I/O Completion object type */
299  RtlInitUnicodeString(&Name, L"IoCompletion");
300  ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(KQUEUE);
301  ObjectTypeInitializer.ValidAccessMask = IO_COMPLETION_ALL_ACCESS;
302  ObjectTypeInitializer.InvalidAttributes |= OBJ_PERMANENT;
303  ObjectTypeInitializer.GenericMapping = IopCompletionMapping;
304  ObjectTypeInitializer.DeleteProcedure = IopDeleteIoCompletion;
306  &ObjectTypeInitializer,
307  NULL,
308  &IoCompletionType))) return FALSE;
309 
310  /* Initialize the File object type */
311  RtlInitUnicodeString(&Name, L"File");
312  ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(FILE_OBJECT);
313  ObjectTypeInitializer.InvalidAttributes |= OBJ_EXCLUSIVE;
314  ObjectTypeInitializer.MaintainHandleCount = TRUE;
315  ObjectTypeInitializer.ValidAccessMask = FILE_ALL_ACCESS;
316  ObjectTypeInitializer.GenericMapping = IopFileMapping;
317  ObjectTypeInitializer.CloseProcedure = IopCloseFile;
318  ObjectTypeInitializer.DeleteProcedure = IopDeleteFile;
319  ObjectTypeInitializer.SecurityProcedure = IopGetSetSecurityObject;
320  ObjectTypeInitializer.QueryNameProcedure = IopQueryName;
321  ObjectTypeInitializer.ParseProcedure = IopParseFile;
322  ObjectTypeInitializer.UseDefaultObject = FALSE;
324  &ObjectTypeInitializer,
325  NULL,
326  &IoFileObjectType))) return FALSE;
327 
328  /* Success */
329  return TRUE;
330 }
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
Definition: oblife.c:1048
#define TRUE
Definition: types.h:120
#define IO_COMPLETION_ALL_ACCESS
Definition: file.c:72
POBJECT_TYPE IoControllerObjectType
Definition: controller.c:16
#define FILE_ALL_ACCESS
Definition: nt_native.h:651
VOID NTAPI IopCloseFile(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
Definition: file.c:2177
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:1318
POBJECT_TYPE IoAdapterObjectType
Definition: adapter.c:18
GENERIC_MAPPING IopFileMapping
Definition: iomgr.c:49
#define OBJ_OPENLINK
Definition: winternl.h:230
#define OBJ_PERMANENT
Definition: winternl.h:226
POBJECT_TYPE IoDriverObjectType
Definition: driver.c:32
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)
GENERIC_MAPPING IopCompletionMapping
Definition: iocomp.c:20
BOOLEAN MaintainHandleCount
Definition: obtypes.h:361
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
struct NameRec_ * Name
Definition: cdprocs.h:464
VOID NTAPI IopDeleteDevice(IN PVOID ObjectBody)
Definition: device.c:52
smooth NULL
Definition: ftsmooth.c:416
#define OBJ_EXCLUSIVE
Definition: winternl.h:227
VOID NTAPI IopDeleteFile(IN PVOID ObjectBody)
Definition: file.c:1354
OB_CLOSE_METHOD CloseProcedure
Definition: obtypes.h:368
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
OB_PARSE_METHOD ParseProcedure
Definition: obtypes.h:370
struct _CONTROLLER_OBJECT CONTROLLER_OBJECT
VOID NTAPI IopDeleteIoCompletion(PVOID ObjectBody)
Definition: iocomp.c:100
struct _DEVICE_OBJECT DEVICE_OBJECT
static const WCHAR L[]
Definition: oid.c:1250
struct _DRIVER_OBJECT DRIVER_OBJECT
POBJECT_TYPE IoFileObjectType
Definition: iomgr.c:36
GENERIC_MAPPING GenericMapping
Definition: obtypes.h:358
OB_SECURITY_METHOD SecurityProcedure
Definition: obtypes.h:371
OB_QUERYNAME_METHOD QueryNameProcedure
Definition: obtypes.h:372
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
struct _KQUEUE KQUEUE
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:1925
VOID NTAPI IopDeleteDriver(IN PVOID ObjectBody)
Definition: driver.c:58
OB_DELETE_METHOD DeleteProcedure
Definition: obtypes.h:369
POBJECT_TYPE IoCompletionType
Definition: iocomp.c:16
POBJECT_TYPE IoDeviceObjectType
Definition: iomgr.c:35
ULONG DefaultNonPagedPoolCharge
Definition: obtypes.h:365

Referenced by IoInitSystem().

◆ IopCreateRootDirectories()

BOOLEAN INIT_FUNCTION NTAPI IopCreateRootDirectories ( VOID  )

Definition at line 335 of file iomgr.c.

336 {
339  HANDLE Handle;
341 
342  /* Create the '\Driver' object directory */
343  RtlInitUnicodeString(&DirName, L"\\Driver");
345  &DirName,
347  NULL,
348  NULL);
352  if (!NT_SUCCESS(Status))
353  {
354  DPRINT1("Failed to create \\Driver directory: 0x%lx\n", Status);
355  return FALSE;
356  }
357  NtClose(Handle);
358 
359  /* Create the '\FileSystem' object directory */
360  RtlInitUnicodeString(&DirName, L"\\FileSystem");
362  &DirName,
364  NULL,
365  NULL);
369  if (!NT_SUCCESS(Status))
370  {
371  DPRINT1("Failed to create \\FileSystem directory: 0x%lx\n", Status);
372  return FALSE;
373  }
374  NtClose(Handle);
375 
376  /* Create the '\FileSystem' object directory */
377  RtlInitUnicodeString(&DirName, L"\\FileSystem\\Filters");
379  &DirName,
381  NULL,
382  NULL);
386  if (!NT_SUCCESS(Status))
387  {
388  DPRINT1("Failed to create \\FileSystem\\Filters directory: 0x%lx\n", Status);
389  return FALSE;
390  }
391  NtClose(Handle);
392 
393  /* Return success */
394  return TRUE;
395 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define TRUE
Definition: types.h:120
LONG NTSTATUS
Definition: precomp.h:26
#define OBJ_PERMANENT
Definition: winternl.h:226
smooth NULL
Definition: ftsmooth.c:416
_In_ HANDLE Handle
Definition: extypes.h:390
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399
static const WCHAR L[]
Definition: oid.c:1250
Status
Definition: gdiplustypes.h:24
NTSTATUS NTAPI NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: obdir.c:731
#define DIRECTORY_ALL_ACCESS
Definition: nt_native.h:1259
#define DPRINT1
Definition: precomp.h:8
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
_In_ PFCB _In_ PCD_NAME DirName
Definition: cdprocs.h:741
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106

Referenced by IoInitSystem().

◆ IopInitLookasideLists()

VOID INIT_FUNCTION NTAPI IopInitLookasideLists ( VOID  )

Definition at line 99 of file iomgr.c.

100 {
101  ULONG LargeIrpSize, SmallIrpSize, MdlSize;
102  LONG i;
103  PKPRCB Prcb;
104  PGENERAL_LOOKASIDE CurrentList = NULL;
105 
106  /* Calculate the sizes */
107  LargeIrpSize = sizeof(IRP) + (8 * sizeof(IO_STACK_LOCATION));
108  SmallIrpSize = sizeof(IRP) + sizeof(IO_STACK_LOCATION);
109  MdlSize = sizeof(MDL) + (23 * sizeof(PFN_NUMBER));
110 
111  /* Initialize the Lookaside List for I\O Completion */
113  NonPagedPool,
115  IOC_TAG1,
116  32,
118 
119  /* Initialize the Lookaside List for Large IRPs */
121  NonPagedPool,
122  LargeIrpSize,
123  IO_LARGEIRP,
124  64,
126 
127 
128  /* Initialize the Lookaside List for Small IRPs */
130  NonPagedPool,
131  SmallIrpSize,
132  IO_SMALLIRP,
133  32,
135 
136  /* Initialize the Lookaside List for MDLs */
138  NonPagedPool,
139  MdlSize,
140  TAG_MDL,
141  128,
143 
144  /* Allocate the global lookaside list buffer */
145  CurrentList = ExAllocatePoolWithTag(NonPagedPool,
146  4 * KeNumberProcessors *
147  sizeof(GENERAL_LOOKASIDE),
148  TAG_IO);
149 
150  /* Loop all processors */
151  for (i = 0; i < KeNumberProcessors; i++)
152  {
153  /* Get the PRCB for this CPU */
154  Prcb = KiProcessorBlock[i];
155  DPRINT("Setting up lookaside for CPU: %x, PRCB: %p\n", i, Prcb);
156 
157  /* Write IRP credit limit */
159 
160  /* Set the I/O Completion List */
162  if (CurrentList)
163  {
164  /* Initialize the Lookaside List for mini-packets */
166  NonPagedPool,
169  32,
171  Prcb->PPLookasideList[LookasideCompletionList].P = CurrentList;
172  CurrentList++;
173 
174  }
175  else
176  {
178  }
179 
180  /* Set the Large IRP List */
182  if (CurrentList)
183  {
184  /* Initialize the Lookaside List for Large IRPs */
186  NonPagedPool,
187  LargeIrpSize,
189  64,
191  Prcb->PPLookasideList[LookasideLargeIrpList].P = CurrentList;
192  CurrentList++;
193 
194  }
195  else
196  {
198  }
199 
200  /* Set the Small IRP List */
202  if (CurrentList)
203  {
204  /* Initialize the Lookaside List for Small IRPs */
206  NonPagedPool,
207  SmallIrpSize,
209  32,
211  Prcb->PPLookasideList[LookasideSmallIrpList].P = CurrentList;
212  CurrentList++;
213 
214  }
215  else
216  {
218  }
219 
220  /* Set the MDL Completion List */
222  if (CurrentList)
223  {
224  /* Initialize the Lookaside List for MDLs */
226  NonPagedPool,
227  SmallIrpSize,
228  TAG_MDL,
229  128,
231 
232  Prcb->PPLookasideList[LookasideMdlList].P = CurrentList;
233  CurrentList++;
234 
235  }
236  else
237  {
239  }
240  }
241 }
#define TAG_IO
Definition: tag.h:69
IRP
Definition: iotypes.h:2462
GENERAL_LOOKASIDE IoLargeIrpLookaside
Definition: iomgr.c:83
LONG LookasideIrpFloat
Definition: ketypes.h:655
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
PP_LOOKASIDE_LIST PPLookasideList[16]
Definition: ketypes.h:624
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
ULONG PFN_NUMBER
Definition: ke.h:8
long LONG
Definition: pedump.c:60
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE * PGENERAL_LOOKASIDE
GENERAL_LOOKASIDE IoCompletionPacketLookaside
Definition: iocomp.c:18
smooth NULL
Definition: ftsmooth.c:416
void DPRINT(...)
Definition: polytest.cpp:61
GENERAL_LOOKASIDE IoSmallIrpLookaside
Definition: iomgr.c:84
INIT_FUNCTION 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:35
#define IO_LARGEIRP_CPU
Definition: tag.h:64
#define TAG_MDL
Definition: tag.h:86
struct _GENERAL_LOOKASIDE * L
Definition: ketypes.h:760
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
MDL
Definition: mmtypes.h:117
#define IOC_TAG1
Definition: tag.h:66
#define IO_SMALLIRP_CPU
Definition: tag.h:65
CCHAR KeNumberProcessors
Definition: krnlinit.c:35
struct _GENERAL_LOOKASIDE * P
Definition: ketypes.h:759
PKPRCB KiProcessorBlock[]
Definition: krnlinit.c:32
unsigned int ULONG
Definition: retypes.h:1
GENERAL_LOOKASIDE IopMdlLookasideList
Definition: iomgr.c:85
#define IO_SMALLIRP
Definition: tag.h:63
#define IO_LARGEIRP
Definition: tag.h:62
LIST_ENTRY ExSystemLookasideListHead
Definition: lookas.c:25

Referenced by IoInitSystem().

◆ IopMarkBootPartition()

BOOLEAN INIT_FUNCTION NTAPI IopMarkBootPartition ( IN PLOADER_PARAMETER_BLOCK  LoaderBlock)

Definition at line 400 of file iomgr.c.

401 {
403  STRING DeviceString;
404  CHAR Buffer[256];
410 
411  /* Build the ARC device name */
412  sprintf(Buffer, "\\ArcName\\%s", LoaderBlock->ArcBootDeviceName);
413  RtlInitAnsiString(&DeviceString, Buffer);
415  if (!NT_SUCCESS(Status)) return FALSE;
416 
417  /* Open it */
419  &DeviceName,
421  NULL,
422  NULL);
426  &IoStatusBlock,
427  0,
429  if (!NT_SUCCESS(Status))
430  {
431  /* Fail */
432  KeBugCheckEx(INACCESSIBLE_BOOT_DEVICE,
434  Status,
435  0,
436  0);
437  }
438 
439  /* Get the DO */
441  0,
443  KernelMode,
444  (PVOID *)&FileObject,
445  NULL);
446  if (!NT_SUCCESS(Status))
447  {
448  /* Fail */
450  return FALSE;
451  }
452 
453  /* Mark it as the boot partition */
454  FileObject->DeviceObject->Flags |= DO_SYSTEM_BOOT_PARTITION;
455 
456  /* Save a copy of the DO for the I/O Error Logger */
457  ObReferenceObject(FileObject->DeviceObject);
458  IopErrorLogObject = FileObject->DeviceObject;
459 
460  /* Cleanup and return success */
464  return TRUE;
465 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define TRUE
Definition: types.h:120
char CHAR
Definition: xmlstorage.h:175
LONG NTSTATUS
Definition: precomp.h:26
VOID NTAPI ObDereferenceObject(IN PVOID Object)
Definition: obref.c:375
WCHAR DeviceName[]
Definition: adapter.cpp:21
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
uint32_t ULONG_PTR
Definition: typedefs.h:63
#define sprintf(buf, format,...)
Definition: sprintf.c:55
HANDLE FileHandle
Definition: stats.c:38
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:496
#define DO_SYSTEM_BOOT_PARTITION
Definition: env_spec_w32.h:400
smooth NULL
Definition: ftsmooth.c:416
Definition: bufpool.h:45
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
* PFILE_OBJECT
Definition: iotypes.h:1954
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define FILE_READ_ATTRIBUTES
Definition: nt_native.h:647
std::wstring STRING
Definition: fontsub.cpp:33
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_NON_DIRECTORY_FILE
Definition: constants.h:492
POBJECT_TYPE IoFileObjectType
Definition: iomgr.c:36
Status
Definition: gdiplustypes.h:24
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
#define ObReferenceObject
Definition: obfuncs.h:204
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
PDEVICE_OBJECT IopErrorLogObject
Definition: error.c:38
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
Definition: rtlcompat.c:107

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 {
37  KIRQL OldIrql;
38  PLIST_ENTRY TimerEntry;
40  ULONG i;
41 
42  /* Check if any Timers are actualyl 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
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
LIST_ENTRY IopTimerQueueHead
Definition: iotimer.c:19
KSPIN_LOCK IopTimerLock
Definition: iotimer.c:18
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
struct _LIST_ENTRY * Flink
Definition: typedefs.h:119
#define KeAcquireSpinLock(sl, irql)
Definition: env_spec_w32.h:609
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Definition: kefuncs.h:803
Definition: typedefs.h:117
UINT Timer
Definition: capclock.c:11
#define KeReleaseSpinLock(sl, irql)
Definition: env_spec_w32.h:627
ULONG IopTimerCount
Definition: iotimer.c:26
unsigned int ULONG
Definition: retypes.h:1

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 TRUE
Definition: types.h:120
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI WmipInitializeGuidObjectType(VOID)
Definition: guidobj.c:113
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
static const WCHAR L[]
Definition: oid.c:1250
Status
Definition: gdiplustypes.h:24
NTSTATUS NTAPI IoCreateDriver(IN PUNICODE_STRING DriverName OPTIONAL, IN PDRIVER_INITIALIZE InitializationFunction)
Definition: driver.c:1674
#define DPRINT1
Definition: precomp.h:8
#define RTL_CONSTANT_STRING(s)
Definition: tunneltest.c:14

Referenced by IoInitSystem().

Variable Documentation

◆ DriverBootReinitListHead

LIST_ENTRY DriverBootReinitListHead

◆ DriverBootReinitListLock

KSPIN_LOCK DriverBootReinitListLock

◆ DriverReinitListHead

LIST_ENTRY DriverReinitListHead

Definition at line 21 of file driver.c.

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

◆ DriverReinitListLock

KSPIN_LOCK DriverReinitListLock

Definition at line 22 of file driver.c.

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

◆ IoAdapterObjectType

POBJECT_TYPE IoAdapterObjectType

Definition at line 18 of file adapter.c.

Referenced by IopCreateObjectTypes().

◆ IoCompletionPacketLookaside

GENERAL_LOOKASIDE IoCompletionPacketLookaside

Definition at line 18 of file iocomp.c.

Referenced by IopInitLookasideLists().

◆ IoControllerObjectType

POBJECT_TYPE IoControllerObjectType

Definition at line 16 of file controller.c.

Referenced by IoCreateController(), and IopCreateObjectTypes().

◆ IoCountOperations

BOOLEAN IoCountOperations = TRUE

Definition at line 38 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(), FFSInvalidateVolumes(), 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(), Pin_fnDeviceIoControl(), Pin_fnWrite(), PopAddRemoveSysCapsCallback(), RfsdInvalidateVolumes(), 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 83 of file iomgr.c.

Referenced by IopInitLookasideLists().

◆ IoOtherOperationCount

ULONG IoOtherOperationCount = 0

Definition at line 43 of file iomgr.c.

Referenced by IopUpdateOperationCount(), and QSI_DEF().

◆ IoOtherTransferCount

LARGE_INTEGER IoOtherTransferCount = {{0, 0}}

Definition at line 44 of file iomgr.c.

Referenced by IopUpdateTransferCount(), and QSI_DEF().

◆ IopCdRomFileSystemQueueHead

LIST_ENTRY IopCdRomFileSystemQueueHead

◆ IopDatabaseResource

◆ IopDiskFileSystemQueueHead

LIST_ENTRY IopDiskFileSystemQueueHead

◆ IopDriverLoadResource

ERESOURCE IopDriverLoadResource

Definition at line 19 of file driver.c.

Referenced by IoInitSystem().

◆ IopErrorLogListHead

LIST_ENTRY IopErrorLogListHead

Definition at line 30 of file error.c.

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

◆ IopErrorLogObject

PDEVICE_OBJECT IopErrorLogObject

Definition at line 38 of file error.c.

Referenced by IopMarkBootPartition().

◆ IopFileMapping

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

Definition at line 49 of file iomgr.c.

Referenced by IoGetFileObjectGenericMapping(), and IopCreateObjectTypes().

◆ IopFsNotifyChangeQueueHead

◆ IopLoaderBlock

PLOADER_PARAMETER_BLOCK IopLoaderBlock

Definition at line 88 of file iomgr.c.

Referenced by IoGetBootDiskInformation(), and IoInitSystem().

◆ IopLogListLock

KSPIN_LOCK IopLogListLock

Definition at line 31 of file error.c.

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

◆ IopMdlLookasideList

GENERAL_LOOKASIDE IopMdlLookasideList

Definition at line 85 of file iomgr.c.

Referenced by IopInitLookasideLists().

◆ IopNetworkFileSystemQueueHead

LIST_ENTRY IopNetworkFileSystemQueueHead

Definition at line 26 of file volume.c.

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

◆ IopNumTriageDumpDataBlocks

ULONG IopNumTriageDumpDataBlocks

Definition at line 46 of file iomgr.c.

◆ IopSecurityResource

ERESOURCE IopSecurityResource

◆ IopTapeFileSystemQueueHead

LIST_ENTRY IopTapeFileSystemQueueHead

◆ IopTimer

KTIMER IopTimer

Definition at line 23 of file iotimer.c.

Referenced by IoInitSystem().

◆ IopTimerDpc

KDPC IopTimerDpc

Definition at line 22 of file iotimer.c.

Referenced by IoInitSystem().

◆ IopTimerLock

◆ IopTimerQueueHead

LIST_ENTRY IopTimerQueueHead

Definition at line 19 of file iotimer.c.

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

◆ IopTraceLevel

ULONG IopTraceLevel = 0

Definition at line 16 of file iomgr.c.

◆ IopTriageDumpDataBlocks

PVOID IopTriageDumpDataBlocks[64]

Definition at line 47 of file iomgr.c.

◆ IoReadOperationCount

ULONG IoReadOperationCount = 0

Definition at line 39 of file iomgr.c.

Referenced by IopUpdateOperationCount(), and QSI_DEF().

◆ IoReadTransferCount

LARGE_INTEGER IoReadTransferCount = {{0, 0}}

Definition at line 40 of file iomgr.c.

Referenced by IopUpdateTransferCount(), and QSI_DEF().

◆ IoSmallIrpLookaside

GENERAL_LOOKASIDE IoSmallIrpLookaside

Definition at line 84 of file iomgr.c.

Referenced by IopInitLookasideLists().

◆ IoStatisticsLock

KSPIN_LOCK IoStatisticsLock = 0

Definition at line 45 of file iomgr.c.

Referenced by IoInitSystem().

◆ IoWriteOperationCount

ULONG IoWriteOperationCount = 0

Definition at line 41 of file iomgr.c.

Referenced by IopUpdateOperationCount(), and QSI_DEF().

◆ IoWriteTransferCount

LARGE_INTEGER IoWriteTransferCount = {{0, 0}}

Definition at line 42 of file iomgr.c.

Referenced by IopUpdateTransferCount(), and QSI_DEF().

◆ LastChanceShutdownListHead

◆ PnpNotifyListHead

LIST_ENTRY PnpNotifyListHead

◆ PnpNotifyListLock

◆ PnpSystemInit

BOOLEAN PnpSystemInit = FALSE

Definition at line 17 of file iomgr.c.

Referenced by IoInitSystem(), IopActionInitChildServices(), and IopInitializeDriverModule().

◆ ShutdownListHead

◆ ShutdownListLock