2016-04-25 8 views
3

Windows APIはGetVolumeInformation関数をサポートしています。この関数は、Windowsボリュームに関する情報を提供します。具体的には、FILE_CASE_SENSITIVE_SEARCHスイッチを返します。カーネルにはFltQueryVolumeInformationZwQueryVolumeInformationFileがありますが、利用可能な情報クラスから大文字と小文字の区別の情報を引き出す方法はありません。カーネルモードでのWindowsボリュームの大文字と小文字の区別の決定

私は、FILE_CASE_SENSITIVE_SEARCHスイッチでは、大文字と小文字を区別した検索が可能であることを指定しています(デフォルトでは行われていません)。ファイルのオープン方法に基づいて大文字と小文字の区別のみを知っているだけです(FILE_FLAG_POSIX_SEMANTICSフラグを指定してCreateFileを呼び出す必要があります。そうでない場合はWin32の大文字小文字を区別しない動作が使用されます)。

+0

興味深い質問です。私が理解しているように、大文字と小文字の区別は、カーネルで有効にし、ファイルシステムでサポートされていなければならず、CreateFile(またはZwCreateFile)呼び出しで要求されて機能する必要があります。しかし、NTFSでボリューム単位でオンとオフを切り替えることができるかどうかはわかりません。もしそうでなければ、GetVolumeInformationが実際に探しているものがわかりません。 –

答えて

1

[OK]を、私はMSDNにこの質問をしてanswer

を見つけどういうわけか、私はFILE_FS_ATTRIBUTE_INFORMATION情報クラスの属性はZwQueryVolumeInformationFileとFltQueryVolumeInformation機能がFILE_CASE_PRESERVED_NAMES含む様々なビットフラグでFileSystemAttributesフィールドが含まれている構造体を返すことができるようになることを逃し、 FILE_CASE_SENSITIVE_SEARCH。

これは、ボリュームが大文字と小文字を区別する名前検索をサポートすることを示しています(デフォルトではありません)。大文字と小文字の区別を利用するには、CreateFileでFILE_FLAG_POSTIX_SEMANTICSフラグを使用する必要があります。また、これをデフォルトにするレジストリ設定があるようです(あなたはGoogle/bingすることができます)。

関連する問題