Stop dumping PnP nodes at an empty node.
authorEric Kohl <eric.kohl@reactos.org>
Mon, 21 Jun 2004 12:12:01 +0000 (12:12 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Mon, 21 Jun 2004 12:12:01 +0000 (12:12 +0000)
svn path=/trunk/; revision=9795

reactos/apps/utils/pnpdump/pnpdump.c

index ade651a..00a25ad 100644 (file)
@@ -671,29 +671,28 @@ int main (int argc, char *argv[])
   HKEY hPnpKey;
   DWORD dwType;
   DWORD dwSize;
   HKEY hPnpKey;
   DWORD dwType;
   DWORD dwSize;
-  BOOL Ask = TRUE;
+  BOOL Ask;
   PCM_FULL_RESOURCE_DESCRIPTOR lpBuffer;
   PCM_PNP_BIOS_INSTALLATION_CHECK lpPnpInst;
   PCM_PNP_BIOS_DEVICE_NODE lpDevNode;
   PCM_FULL_RESOURCE_DESCRIPTOR lpBuffer;
   PCM_PNP_BIOS_INSTALLATION_CHECK lpPnpInst;
   PCM_PNP_BIOS_DEVICE_NODE lpDevNode;
-
-  DWORD dwDataSize, dwResourceSize;
+  DWORD dwDataSize;
+  DWORD dwResourceSize;
 
   hPnpKey = 0;
 
   hPnpKey = 0;
-  
 
 
-  if (argc >1 && (!strcmp (argv[1],"/S") || !strcmp (argv[1],"/s")))
+  Ask = TRUE;
+  if (argc >1 && (!strcmp(argv[1],"/S") || !strcmp(argv[1],"/s")))
     {
       Ask = FALSE;
     }
     {
       Ask = FALSE;
     }
-  
-  if (argc >1 && !strcmp (argv[1],"/?"))
+
+  if (argc >1 && !strcmp(argv[1],"/?"))
     {
     {
-      printf ("This utility prints the PnP-nodes from the registry\n");
-      printf ("\"/s\" prevents the \"Press any key\"\n\n");
+      printf("This utility prints the PnP-nodes from the registry\n");
+      printf("\"/s\" prevents the \"Press any key\"\n\n");
       return 0;
     }
       return 0;
     }
-    
-    
+
   lError = GetPnpKey(&hPnpKey);
   if (lError != ERROR_SUCCESS)
     {
   lError = GetPnpKey(&hPnpKey);
   if (lError != ERROR_SUCCESS)
     {
@@ -709,6 +708,12 @@ int main (int argc, char *argv[])
   /* Allocate buffer */
   dwSize = 1024;
   lpBuffer = malloc(dwSize);
   /* Allocate buffer */
   dwSize = 1024;
   lpBuffer = malloc(dwSize);
+  if (lpBuffer == NULL)
+    {
+      printf("Error: malloc() failed\n");
+      RegCloseKey(hPnpKey);
+      return 0;
+    }
 
   lError = RegQueryValueEx(hPnpKey,
                           "Configuration Data",
 
   lError = RegQueryValueEx(hPnpKey,
                           "Configuration Data",
@@ -721,11 +726,10 @@ int main (int argc, char *argv[])
       if (lError == ERROR_MORE_DATA)
        {
          printf("Need to resize buffer to %lu\n", dwSize);
       if (lError == ERROR_MORE_DATA)
        {
          printf("Need to resize buffer to %lu\n", dwSize);
-
        }
 
       printf("Failed to read 'Configuration Data' value\n");
        }
 
       printf("Failed to read 'Configuration Data' value\n");
-      free (lpBuffer);
+      free(lpBuffer);
       RegCloseKey(hPnpKey);
       return 0;
     }
       RegCloseKey(hPnpKey);
       return 0;
     }
@@ -739,7 +743,7 @@ int main (int argc, char *argv[])
   if (lpBuffer->PartialResourceList.Count == 0)
     {
       printf("Invalid resource count!\n");
   if (lpBuffer->PartialResourceList.Count == 0)
     {
       printf("Invalid resource count!\n");
-      free (lpBuffer);
+      free(lpBuffer);
       return 0;
     }
 
       return 0;
     }
 
@@ -774,7 +778,7 @@ int main (int argc, char *argv[])
     }
 
 #if 0
     }
 
 #if 0
-      printf ("Node: %x  Size %hu (0x%hx)\n",
+      printf("Node: %x  Size %hu (0x%hx)\n",
              lpDevNode->Node,
              lpDevNode->Size,
              lpDevNode->Size);
              lpDevNode->Node,
              lpDevNode->Size,
              lpDevNode->Size);
@@ -789,10 +793,10 @@ return 0;
       if (lpDevNode->Size == 0)
        break;
 
       if (lpDevNode->Size == 0)
        break;
 
-      printf ("Node: %x  Size %hu (0x%hx)\n",
-             lpDevNode->Node,
-             lpDevNode->Size,
-             lpDevNode->Size);
+      printf("Node: %x  Size %hu (0x%hx)\n",
+            lpDevNode->Node,
+            lpDevNode->Size,
+            lpDevNode->Size);
 
       dwDataSize += lpDevNode->Size;
       lpDevNode = (PCM_PNP_BIOS_DEVICE_NODE)((DWORD)lpDevNode + lpDevNode->Size);
 
       dwDataSize += lpDevNode->Size;
       lpDevNode = (PCM_PNP_BIOS_DEVICE_NODE)((DWORD)lpDevNode + lpDevNode->Size);
@@ -800,12 +804,12 @@ return 0;
 
   if (Ask)
     {
 
   if (Ask)
     {
-      printf ("\n Press any key...\n");
+      printf("\n Press any key...\n");
       getch();
     }
   else
     {
       getch();
     }
   else
     {
-      printf ("\n");
+      printf("\n");
     }
 
   dwDataSize = sizeof(CM_PNP_BIOS_INSTALLATION_CHECK);
     }
 
   dwDataSize = sizeof(CM_PNP_BIOS_INSTALLATION_CHECK);
@@ -813,23 +817,26 @@ return 0;
 
   while (dwDataSize < dwResourceSize)
     {
 
   while (dwDataSize < dwResourceSize)
     {
-      PrintDeviceData (lpDevNode);
+      if (lpDevNode->Size == 0)
+       break;
+
+      PrintDeviceData(lpDevNode);
 
       if (Ask)
         {
 
       if (Ask)
         {
-          printf ("\n Press any key...\n");
+          printf("\n Press any key...\n");
           getch();
         }
       else
         {
           getch();
         }
       else
         {
-          printf ("\n");
+          printf("\n");
         }
         }
-      
+
       dwDataSize += lpDevNode->Size;
       lpDevNode = (PCM_PNP_BIOS_DEVICE_NODE)((DWORD)lpDevNode + lpDevNode->Size);
     }
 
       dwDataSize += lpDevNode->Size;
       lpDevNode = (PCM_PNP_BIOS_DEVICE_NODE)((DWORD)lpDevNode + lpDevNode->Size);
     }
 
-  free (lpBuffer);
+  free(lpBuffer);
 
   return 0;
 }
 
   return 0;
 }