[NTOS:IO]
[reactos.git] / reactos / ntoskrnl / io / iomgr / driver.c
index e53ec32..499e42f 100644 (file)
@@ -197,7 +197,6 @@ IopSuffixUnicodeString(
  */
 VOID
 FASTCALL
-INIT_FUNCTION
 IopDisplayLoadingMessage(PUNICODE_STRING ServiceName)
 {
     CHAR TextBuffer[256];
@@ -875,6 +874,7 @@ IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY BootLdrEntry)
     PLDR_DATA_TABLE_ENTRY LdrEntry;
     PLIST_ENTRY NextEntry;
     UNICODE_STRING ServiceName;
+    BOOLEAN Success;
 
     /*
      * Display 'Loading XXX...' message
@@ -898,7 +898,12 @@ IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY BootLdrEntry)
     /*
      * Strip the file extension from ServiceName
      */
-    RtlCreateUnicodeString(&ServiceName, FileNameWithoutPath);
+    Success = RtlCreateUnicodeString(&ServiceName, FileNameWithoutPath);
+    if (!Success)
+    {
+        return STATUS_INSUFFICIENT_RESOURCES;
+    }
+
     FileExtension = wcsrchr(ServiceName.Buffer, '.');
     if (FileExtension != NULL)
     {
@@ -934,7 +939,7 @@ IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY BootLdrEntry)
 
         NextEntry = NextEntry->Flink;
     }
-    NT_ASSERT(NextEntry != &PsLoadedModuleList);
+    ASSERT(NextEntry != &PsLoadedModuleList);
 
     /*
      * Initialize the driver
@@ -1374,7 +1379,7 @@ IopUnloadDriver(PUNICODE_STRING DriverServiceName, BOOLEAN UnloadPnpDrivers)
         /* Set the unload invoked flag and call the unload routine */
         DriverObject->Flags |= DRVO_UNLOAD_INVOKED;
         Status = IopLoadUnloadDriver(NULL, &DriverObject);
-        NT_ASSERT(Status == STATUS_SUCCESS);
+        ASSERT(Status == STATUS_SUCCESS);
 
         /* Mark the driver object temporary, so it could be deleted later */
         ObMakeTemporaryObject(DriverObject);
@@ -1496,7 +1501,7 @@ try_again:
         /* Create a random name and set up the string*/
         NameLength = (USHORT)swprintf(NameBuffer,
                                       DRIVER_ROOT_NAME L"%08u",
-                                      KeTickCount);
+                                      KeTickCount.LowPart);
         LocalDriverName.Length = NameLength * sizeof(WCHAR);
         LocalDriverName.MaximumLength = LocalDriverName.Length + sizeof(UNICODE_NULL);
         LocalDriverName.Buffer = NameBuffer;
@@ -1511,7 +1516,7 @@ try_again:
     ObjectSize = sizeof(DRIVER_OBJECT) + sizeof(EXTENDED_DRIVER_EXTENSION);
     InitializeObjectAttributes(&ObjectAttributes,
                                &LocalDriverName,
-                               OBJ_PERMANENT | OBJ_CASE_INSENSITIVE,
+                               OBJ_PERMANENT | OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
                                NULL,
                                NULL);
 
@@ -1874,7 +1879,7 @@ IopLoadUnloadDriverWorker(
 {
     PLOAD_UNLOAD_PARAMS LoadParams = Parameter;
 
-    NT_ASSERT(PsGetCurrentProcess() == PsInitialSystemProcess);
+    ASSERT(PsGetCurrentProcess() == PsInitialSystemProcess);
     LoadParams->Status = IopLoadUnloadDriver(LoadParams->RegistryPath,
                                              &LoadParams->DriverObject);
     KeSetEvent(&LoadParams->Event, 0, FALSE);