1

C/C++ から生の Windows プログラミング API を使用し、ファイル ハンドルまたはファイル、フォルダー、リンクなどへのパスを使用します。ADSファイル (など) が(代替データ ストリーム)をサポートしているかどうかをプログラムで判断するにはどうすればよいですか?

私が知っておくべきことの 1 つは、ファイルが NTFS パーティション上にあるかどうかということだと思いますが、データ フォークや代替データ ストリームをサポートするある種の Mac または *nix ファイルシステムをマウントできる可能性があることはわかっています。 、およびそのようなすべてのケースは、単一の API 呼び出しまたはデータ構造によってカバーされる場合があります。

第二に、NTFS パーティションに存在できるすべての種類のオブジェクト (フォルダー、シンボリック リンク、ハードリンクなど) が ADS を持つことができるかどうかわかりません。

特定のファイルなどに ADS を持つ機能があるかどうかを教えてくれるすべてのケースを処理できる API などは何ですか?

(この質問では、ファイルに ADS があるかどうかを調べているのではなく、ファイルADS があるかどうかを調べているだけです。たとえば、作成したばかりのファイルが含まれている可能性があります。)

4

2 に答える 2

3

ADS は NTFS の機能です。GetVolumeInformation()特定のパスが NTFS ファイル システム上にあるかどうか、およびそのボリュームが ADS をサポートしているかどうかを検出するために使用できます。私の知る限り、実際のファイルにのみADSを添付できます。GetFileAttributes()パスがファイル、ディレクトリ、シンボリック リンクなどであるかどうかを検出するために使用できます。

于 2012-10-25T09:20:34.250 に答える
1

他のファイルと同様に、ディレクトリも他の ADS をホストできます! NTFS 上のファイル オブジェクトは、複数のデータ ストリームを格納できます。「目に見える」ものには名前が付けられ、追加のデータ ストリームは、Explorer に関する限り「見えない」ものです。実際、プロンプトで、dir を呼び出すときに /R スイッチを使用して ADS を表示できるようになりました。

于 2012-10-31T19:39:34.970 に答える