1 /* 2 * FILE : lsdd.c 3 * AUTHOR: Emanuele ALIBERTI 4 * DATE : 2000-08-04 5 * DESC : List DOS devices, i.e. symbolic links created 6 * in the \?? object manager's name space. 7 */ 8 #include <stdio.h> 9 #include <stdlib.h> 10 #include <stdarg.h> 11 12 #include <windef.h> 13 #include <winbase.h> 14 15 16 #include <reactos/buildno.h> 17 18 #include "../win32err.h" 19 20 #define LINKS_SIZE 32768 21 #define DEVICE_SIZE 8192 22 23 static const LPWSTR error_prefix = L"lsdd: "; 24 25 static char SymbolicLinks [LINKS_SIZE]; 26 static char DosDeviceName [DEVICE_SIZE]; 27 28 static char DeviceNames [DEVICE_SIZE]; 29 static char DeviceName [DEVICE_SIZE]; 30 31 32 BOOL 33 WINAPI 34 GetNextString ( 35 char * BufferIn, 36 char * BufferOut, 37 char ** Next 38 ) 39 { 40 char * next = *Next; 41 char * w; 42 43 if ('\0' == *next) return FALSE; 44 for ( w = BufferOut; 45 ('\0' != *next); 46 next ++ 47 ) 48 { 49 *(w ++) = *next; 50 } 51 *w = '\0'; 52 *Next = ++ next; 53 return TRUE; 54 } 55 56 57 int 58 main (int argc, char * argv [] ) 59 { 60 printf ( 61 "ReactOS/Win32 %s - List DOS Devices Utility\n" 62 "Written by E.Aliberti (%s)\n\n", 63 KERNEL_VERSION_STR, 64 __DATE__ 65 ); 66 67 if (0 != QueryDosDevice ( 68 NULL, /* dump full directory */ 69 SymbolicLinks, 70 sizeof SymbolicLinks 71 ) 72 ) 73 { 74 char * NextDosDevice = SymbolicLinks; 75 char * NextDevice; 76 77 while (TRUE == GetNextString ( 78 SymbolicLinks, 79 DosDeviceName, 80 & NextDosDevice 81 ) 82 ) 83 { 84 printf ("%s\n", DosDeviceName); 85 if (0 != QueryDosDevice ( 86 DosDeviceName, 87 DeviceNames, 88 sizeof DeviceNames 89 ) 90 ) 91 { 92 NextDevice = DeviceNames; 93 while (TRUE == GetNextString ( 94 DeviceNames, 95 DeviceName, 96 & NextDevice 97 ) 98 ) 99 { 100 printf (" -> \"%s\"\n", DeviceName); 101 } 102 } 103 else 104 { 105 PrintWin32Error ( 106 error_prefix, 107 GetLastError () 108 ); 109 } 110 printf ("\n"); 111 } 112 } 113 else 114 { 115 PrintWin32Error ( 116 error_prefix, 117 GetLastError () 118 ); 119 return EXIT_FAILURE; 120 } 121 return EXIT_SUCCESS; 122 } 123 124 125 /* EOF */ 126