IPropertySetStorage-NTFS 파일 시스템 구현
NTFS 버전 5.0은 파일 자체가 복합 파일이 아닌 경우 NTFS 볼륨의 파일에 대한 IPropertySetStorage 구현합니다. NTFS 구현은 복합 파일 구현동일합니다. 예외에 대한 자세한 내용은 비고를 참조하세요.
IPropertySetStorage NTFS 구현에 대한 포인터를 가져옵니다.
- StgCreateStorageEx 호출하고 grfFlags 매개 변수에 STGFMT_FILE 지정하여 새 파일을 만듭니다.
- StgOpenStorageEx 호출하고 grfFlags 매개 변수에 STGFMT_FILE 또는 STGFMT_ANY 열거형 값을 지정하여 기존 파일을 엽니다.
그러나 복합 파일에 대한 IPropertySetStorage NTFS 구현을 가져올 수는 없습니다. StgOpenStorage있는 복합 파일을 열 때 STGFMT_FILE 열거형 값을 지정하면 오류가 발생합니다.
또한 단순 속성 집합은 거래할 수 없습니다. 즉, grfFlags 매개 변수에 PROPSETFLAG_NONSIMPLE 지정하지 않는 한 만들기 및 Open 메서드의 grfmode 매개 변수에 STGM_TRANSACTED 지정할 수 없습니다. 속성 집합 스토리지 개체 자체는 트랜잭션 처리를 지원하지 않습니다.
사용 시기
IPropertySetStorage 메서드를 호출하여 현재 NTFS 속성 집합 스토리지에서 속성 집합을 만들거나 열거나 삭제합니다. 스토리지의 속성 집합을 열거하는 데 사용할 수 있는 열거자에 대한 포인터를 제공하는 IPropertySetStorage::Enum메서드도 있습니다.
호환성
IPropertySetStorage 및 IPropertyStorage NTFS 구현은 Windows 2000부터 사용할 수 있습니다. 이전 버전에서는 이러한 속성 집합에 액세스할 수 없습니다.
NTFS 구현은 NTFS 파일의 대체 스트림에 속성 집합을 저장합니다. 기본 파일을 복사할 때 대체 스트림을 복사해야 합니다.
주의
모든 파일 시스템에서 이러한 스트림을 지원하는 것은 아닙니다. 속성 집합이 있는 NTFS 파일이 FAT 볼륨에 복사되면 파일의 데이터만 복사됩니다. 속성 집합이 손실됩니다. CopyFile 함수는 이 경우 오류를 반환하지 않습니다.
주의
파일 복사를 수행하는 컴퓨터가 Windows 2000 이상에서 실행되는 컴퓨터가 아닌 경우 속성 집합이 손실될 수 있습니다. 예를 들어 Windows 95 운영 체제에서 실행 중인 컴퓨터가 NTFS 파일을 복사하는 경우 대상 파일도 NTFS 볼륨에 있더라도 속성 집합이 손실됩니다.
방법
IPropertySetStorage NTFS 파일 시스템 구현은 다음 메서드를 지원합니다.
-
현재 NTFS 파일 스토리지에 새 속성 집합을 만들고 반환 시 IPropertyStorage NTFS 파일 구현에 대한 인터페이스 포인터를 제공합니다. grfmode 매개 변수에 지정된 공유 모드는 STGM_SHARE_EXCLUSIVE합니다.
-
현재 속성 스토리지에서 기존 속성 집합을 엽니다. 반환되는 경우 IPropertyStorageNTFS 파일 구현에 대한 인터페이스 포인터를 제공합니다. grfmode 매개 변수에 지정된 공유 모드는 STGM_SHARE_EXCLUSIVE합니다.
-
현재 속성 스토리지에서 설정된 속성을 삭제합니다.
-
STATPROPSETSTG 구조를 열거하는 데 사용되는 개체를 만듭니다. 각 STATPROPSETSTG 구조체는 단일 속성 집합에 대한 데이터를 제공합니다.
발언
IPropertySetStorage 및 IPropertyStorage의 NTFS 구현은 해당 파일의 내용에 영향을 주지 않고 파일에 속성 집합을 저장할 있습니다. 예를 들어 Default.htmHTML 파일에 속성 집합을 만드는 경우 해당 파일은 웹 브라우저에 계속 제대로 표시됩니다. 즉, CreateFile 함수를 사용하여 파일에 액세스할 때 이러한 두 인터페이스를 사용하는 파일의 변경 내용을 검색할 수 없습니다.
IPropertySetStorage NTFS 구현은 NTFS 버전 5.0 볼륨의 파일에 속성 집합을 쓰는 데 사용할 때 안전한 구현을 제공합니다. 이러한 속성 집합은 시스템 오류가 발생하더라도 구현에 의해 손상될 수 없습니다. 예를 들어 속성 집합이 디스크로 플러시되는 동안 IPropertyStorage::Commit 호출하는 동안 시스템에 대한 전원이 실패하는 경우 속성 집합은 중간 상태로 남아 있는 것이 아닙니다. 속성 집합의 이전 버전이 유지되거나 모든 업데이트가 저장됩니다.
IPropertySetStorage NTFS 구현은 다음과 같은 방법으로 복합 파일 구현과 다릅니다.
IEnumSTATPROPSETSTG 인터페이스에서 가져온 STATPROPSETSTG 구조체에는 값이 항상 0(CLSID_NULL)인 clsid 멤버가 포함됩니다. 복합 파일 구현을 사용하면 단순하지 않은 경우 올바른 clsid 멤버가 반환됩니다(속성 집합 대한Storage 및 스트림 개체 참조) 속성 집합.
StgCreateStorageEx 또는 StgOpenStorageEx 함수를 사용하여 IPropertySetStorage 인터페이스 포인터의 NTFS 구현을 가져올 때 grfmode 매개 변수는 복합 파일 구현과 동일한 규칙을 따라야 합니다.
또한 다음 플래그를 사용할 수 없습니다.
STGM_SIMPLE, STGM_TRANSACTED, STGM_CONVERT, STGM_PRIORITY및 STGM_DELETEONRELEASE.
StgCreateStorageEx 또는 StgOpenStorageEx 함수에서 NTFS IPropertySetStorage 인터페이스를 가져오는 경우 공유 모드는 주로 파일 자체를 여는 인스턴스가 아니라 해당 인터페이스의 다른 인스턴스에 적용됩니다. 예를 들어 grfmode 매개 변수를 STGM_READWRITE 설정하여 StgOpenStorageEx 함수를 호출하여 NTFS IPropertySetStorage 인터페이스를 여는 경우|STGM_SHARE_EXCLUSIVECreateFile 함수를 사용하여 파일을 열 수 있습니다.
이 인터페이스를 여는 이러한 동시 인스턴스에는 다음과 같은 제약 조건이 적용됩니다. CreateFile 함수의 dwShareMode 매개 변수는 FILE_SHARE_READ 플래그를 지정해야 하며, dwAccess 매개 변수는 DELETE 플래그를 지정하지 않아야 합니다. 또한 DeleteFile 및 MoveFile 함수는 이러한 속성 집합 인터페이스가 열려 있는 파일에서 호출해서는 안 됩니다. 이러한 함수는 파일에 대한 DELETE 액세스가 필요하기 때문에 이러한 속성 집합 인터페이스가 열려 있어야 합니다.
NTFS IPropertySetStorage 메서드가 읽기 전용으로 열리고 파일에 현재 속성 집합이 없는 경우 반환된 개체는 실제로 파일을 열지 않습니다. 따라서 원래 열린 작업의 공유 모드가 거부되더라도 해당 파일의 다른 열기가 성공합니다.
본보기; NTFS IPropertySetStorageSTGM_READ 모드에서 열리면 |STGM_SHARE_EXCLUSIVE파일에 속성 집합이 없으므로 파일 STGM_READWRITE 동시에 열 수 있습니다.STGM_SHARE_EXCLUSIVE.
관련 항목