-3

Windowsシステムにマウントされたボリューム(別名ファイルシステム)のクラスター(別名アロケーションユニット)のサイズをプログラムで決定したいと思います。いろいろな理由で、を使わない解決策を見つけたいと思いますGetDiskFreeSpace()

この目的で使用できるFSCTL_xxxまたはIOCTL_xxxリクエストはありますか?

4

2 に答える 2

4

NtQueryVolumeInformationFileボリューム上にあるファイルのハンドルを呼び出して、を要求する必要がありますFileFsSizeInformation。あなたはこの機能を介して取得できるはずです

GetProcAddress(GetModuleHandle(TEXT("ntdll.dll")),"NtQueryVolumeInformationFile")

結果のFILE_FS_SIZE_INFORMATION構造には、SectorsPerAllocationUnit値とBytesPerSector使用可能な値があり、乗算すると、アロケーションユニット(クラスター)のサイズがわかります。

于 2012-07-17T06:00:00.443 に答える
2

DeviceIoControlは。で使用できますIOCTL_STORAGE_QUERY_PROPERTY。入力時PropertyIdに、STORAGE_PROPERTY_QUERY構造体のをに設定しStorageAccessAlignmentPropertyます。

これにより、とSTORAGE_ACCESS_ALIGNMENT_DESCRIPTORの両方のメンバーを含むが取得されます。リンクされたリファレンスページには、デバイスの論理/物理セクターサイズを取得して表示するためのデモコードが含まれています。BytesPerLogicalSectorBytesPerPhysicalSector

于 2012-07-08T07:13:42.780 に答える