/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Kernel
- * FILE: ntoskrnl/io/iomgr.c
+ * FILE: ntoskrnl/io/iomgr/iomgr.c
* PURPOSE: I/O Manager Initialization and Misc Utility Functions
*
* PROGRAMMERS: David Welch (welch@mcmail.com)
IN PVOID SystemArgument2
);
+BOOLEAN
+NTAPI
+WmiInitialize(
+ VOID);
+
/* DATA ********************************************************************/
POBJECT_TYPE IoDeviceObjectType = NULL;
POBJECT_TYPE IoFileObjectType = NULL;
extern POBJECT_TYPE IoControllerObjectType;
-extern UNICODE_STRING NtSystemRoot;
BOOLEAN IoCountOperations = TRUE;
ULONG IoReadOperationCount = 0;
LARGE_INTEGER IoReadTransferCount = {{0, 0}};
extern POBJECT_TYPE IoAdapterObjectType;
extern ERESOURCE IopDatabaseResource;
ERESOURCE IopSecurityResource;
+extern ERESOURCE IopDriverLoadResource;
extern KGUARDED_MUTEX PnpNotifyListLock;
extern LIST_ENTRY IopDiskFileSystemQueueHead;
extern LIST_ENTRY IopCdRomFileSystemQueueHead;
ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(DEVICE_OBJECT);
ObjectTypeInitializer.DeleteProcedure = IopDeleteDevice;
ObjectTypeInitializer.ParseProcedure = IopParseDevice;
- ObjectTypeInitializer.SecurityProcedure = IopSecurityFile;
+ ObjectTypeInitializer.SecurityProcedure = IopGetSetSecurityObject;
ObjectTypeInitializer.CaseInsensitive = TRUE;
if (!NT_SUCCESS(ObCreateObjectType(&Name,
&ObjectTypeInitializer,
ObjectTypeInitializer.GenericMapping = IopFileMapping;
ObjectTypeInitializer.CloseProcedure = IopCloseFile;
ObjectTypeInitializer.DeleteProcedure = IopDeleteFile;
- ObjectTypeInitializer.SecurityProcedure = IopSecurityFile;
- ObjectTypeInitializer.QueryNameProcedure = IopQueryNameFile;
+ ObjectTypeInitializer.SecurityProcedure = IopGetSetSecurityObject;
+ ObjectTypeInitializer.QueryNameProcedure = IopQueryNameInternal;
ObjectTypeInitializer.ParseProcedure = IopParseFile;
ObjectTypeInitializer.UseDefaultObject = FALSE;
if (!NT_SUCCESS(ObCreateObjectType(&Name,
BOOLEAN
INIT_FUNCTION
NTAPI
-IopCreateRootDirectories()
+IopCreateRootDirectories(VOID)
{
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING DirName;
IopInitLookasideLists();
/* Initialize all locks and lists */
- ExInitializeResource(&IopDatabaseResource);
- ExInitializeResource(&IopSecurityResource);
+ ExInitializeResourceLite(&IopDatabaseResource);
+ ExInitializeResourceLite(&IopSecurityResource);
+ ExInitializeResourceLite(&IopDriverLoadResource);
KeInitializeGuardedMutex(&PnpNotifyListLock);
InitializeListHead(&IopDiskFileSystemQueueHead);
InitializeListHead(&IopCdRomFileSystemQueueHead);
KeInitializeSpinLock(&ShutdownListLock);
KeInitializeSpinLock(&IopLogListLock);
+ /* Initialize the reserve IRP */
+ if (!IopInitializeReserveIrp(&IopReserveIrpAllocator))
+ {
+ DPRINT1("IopInitializeReserveIrp failed!\n");
+ return FALSE;
+ }
+
/* Initialize Timer List Lock */
KeInitializeSpinLock(&IopTimerLock);
/* Initialize PnP manager */
IopInitializePlugPlayServices();
+ /* Initialize SHIM engine */
+ ApphelpCacheInitialize();
+
+ /* Initialize WMI */
+ WmiInitialize();
+
/* Initialize HAL Root Bus Driver */
HalInitPnpDriver();
return TRUE;
}
+BOOLEAN
+NTAPI
+IoInitializeCrashDump(IN HANDLE PageFileHandle)
+{
+ UNIMPLEMENTED;
+ return FALSE;
+}
+
/* EOF */