レジストリから物理メモリを取得したく(続)


 DWORD dwType;
 BYTE val[256];
 TCHAR key_name[] = "\\DosDevices\\ :";
 int posDriveLetter = sizeof( key_name ) - 3;
 
 for( i='A'; i<='Z'; i++ ) {
  key_name[ posDriveLetter ] = i;

  DWORD val_len = 256;


  // Aは"\"が帰ってきた
  // Bで抜けてしまうので、ERROR_SUCCESSの中でやろう

  ret = RegQueryValueEx( hKey, key_name, NULL, &dwType, val, &val_len );
  if( ret == ERROR_SUCCESS ) {
   char szDrive[4];
   szDrive[0] = i;
   szDrive[1] = '\0';
   arRegDrive.Add( szDrive );
  }
 }

RegCloseKey( hKey );


 // GetLogicalDrivesでHDDドライブを列挙
 char szLetter[8];
 DWORD nDrives = GetLogicalDrives();
 int j = 0;
 for( i=0; i<32; i++ ) {
  if( (1 << i ) & nDrives ) {
   sprintf( szLetter, "%c:\\", 'A'+i );
   if( DRIVE_FIXED == GetDriveType( szLetter ) ) {
    for( int j=0; j