隠し(非表示)パーティションの隠し属性を解除する方法は?

解決


Hoge  2007-12-13 21:00:01  No: 67182

以下のようなパーティション構成で,[Win95-DOS]領域についている隠し属性を解除したいと思っていますが,なかなかうまくいきません。
どなたかご助言を頂ければ助かります。

[Win2K(NTFS)][Win95-DOS(FAT16/Hidden)][NoOS(FAT16)]

DisableHiiddenPartition.cpp:
---------------------------------------
char cDrivePath[] = "\\\\?\\F:";
hVolume = CreateFile( (LPCTSTR)cDrivePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if ( hVolume )
{
  DWORD dwBytesReturned = 0;
  PARTITION_INFORMATION PartInfo;
  if ( DeviceIoControl(hVolume, IOCTL_DISK_GET_PARTITION_INFO, NULL, 0, &PartInfo, sizeof(PartInfo), &dwBytesReturned, NULL) )
  {
    // ボリュームが隠しパーティションか確認
    char cPartInfoTypeHidden[3] = { NULL } ;
    sprintf(cPartInfoTypeHidden, "%02x", PartInfo.PartitionType);
    if ( cPartInfoTypeHidden[0] == '1' )
    {
      if ( ( cPartInfoTypeHidden[1] == '1' )    // FAT12
        || ( cPartInfoTypeHidden[1] == '4' )  // FAT16
        || ( cPartInfoTypeHidden[1] == '6' )  // FAT16B
        || ( cPartInfoTypeHidden[1] == '7' )  // HPFS(NTFS)
        || ( cPartInfoTypeHidden[1] == 'B' )  // FAT32
        || ( cPartInfoTypeHidden[1] == 'C' )  // FAT32X
        || ( cPartInfoTypeHidden[1] == 'E' )  // FAT16X
        )
      {
        // パーティションの隠し属性を解除
        SET_PARTITION_INFORMATION SetPartInfo;
        cPartInfoTypeHidden[0] = '0';
        SetPartInfo.PartitionType = atoi(cPartInfoTypeHidden);
        bDiskDeviceInfo = DeviceIoControl(hVolume, IOCTL_DISK_SET_PARTITION_INFO, &SetPartInfo, sizeof(SetPartInfo), NULL, 0, &dwBytesReturned, NULL);
        if ( bDiskDeviceInfo )
        {
          return 0;
        }
      }
    }
  }
}
return 1;


Hoge  2007-12-14 00:23:54  No: 67183

すみません。自己解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加