2012-10-25 3 views
0

C/C++의 원시 Windows 프로그래밍 API와 파일 핸들, 파일, 폴더, 링크 등의 경로를 사용합니다. 파일 (등)이 ADS (대체 데이터 스트림)을 지원하는지 프로그래밍 방식으로 결정할 수 있습니까?Windows 컴퓨터의 특정 파일이 대체 데이터 스트림을 지원하는지 어떻게 알 수 있습니까?

나는 파일이 NTFS 파티션에 있는지 여부를 알아야한다고 가정하지만, 데이터 포크 또는 대체 데이터를 지원하는 Mac 또는 * nix 파일 시스템을 마운트하는 것이 가능할 수도 있습니다. 어떤 종류의 스트림이 있으며 이러한 모든 경우는 단일 API 호출 또는 데이터 구조로 처리 될 수 있습니다.

둘째, NTFS 파티션에 존재할 수있는 모든 종류의 개체가 폴더, 심볼릭 링크, 하드 링크 등과 같은 ADS를 가질 수 있는지 여부가 확실하지 않습니다.

특정 파일 등이 ADS를 가질 수 있는지 여부를 알려주는 모든 API를 모든 API에서 처리 할 수 ​​있습니까?

(I 파일 의 ADS가 있는지 여부를 찾는 게 아니에요이 질문에, 단지 여부에 대한 가능한 파일을 가지고하는. 그것은 그냥 예를 들어 생성 한 파일을 포함 할 수있다.)

답변

3

ADS를 NTFS의 기능입니다. GetVolumeInformation()을 사용하여 주어진 경로가 NTFS 파일 시스템에 있는지, 그리고 해당 볼륨이 ADS를 전혀 지원하는지 여부를 탐지 할 수 있습니다. AFAIK, 실제 파일 만 ADS를 첨부 할 수 있습니다. GetFileAttributes()을 사용하여 경로가 파일, 디렉토리, 심볼 링크인지 여부를 감지 할 수 있습니다.

1

다른 파일과 마찬가지로 디렉토리도 다른 ADS! NTFS의 모든 파일 객체는 둘 이상의 데이터 스트림을 저장할 수 있습니다. 익스플로러에 관한 한 '가시적'인 것의 이름이 붙여지며, 추가적인 데이터 스트림은 보이지 않습니다. 실제로 프롬프트에서 dir을 호출 할 때/R 스위치를 사용하여 ADS를 표시 할 수 있습니다.