IPropertySetStorage-NTFS 파일 시스템 구현

NTFS 버전 5.0은 파일 자체가 복합 파일이 아닌 경우 NTFS 볼륨의 파일에 대한 IPropertySetStorage 구현을 제공합니다. NTFS 구현은 복합 파일 구현과 동일합니다. 예외에 대한 자세한 내용은 비고를 참조하세요.

IPropertySetStorage의 NTFS 구현에 대한 포인터를 얻으려면

  1. StgCreateStorageEx를 호출하고 grfFlags 매개 변수에 STGFMT_FILE 지정하여 새 파일을 만듭니다.
  2. StgOpenStorageEx를 호출하고 grfFlags 매개 변수에 STGFMT_FILE 또는 STGFMT_ANY 열거형 값을 지정하여 기존 파일을 엽니다.

그러나 복합 파일에 대한 IPropertySetStorage 의 NTFS 구현은 가져올 수 없습니다. StgOpenStorage를 사용하여 복합 파일을 열 때 STGFMT_FILE 열거형 값을 지정하면 오류가 발생합니다.

또한 단순 속성 집합은 거래할 수 없습니다. 즉, grfFlags 매개 변수에 PROPSETFLAG_NONSIMPLE 지정하지 않으면 CreateOpen 메서드의 grfmode 매개 변수에 STGM_TRANSACTED 지정할 수 없습니다. 속성 집합 스토리지 개체 자체는 트랜잭션 처리를 지원하지 않습니다.

사용 시기

IPropertySetStorage 메서드를 호출하여 현재 NTFS 속성 집합 스토리지에서 속성 집합을 만들거나 열거나 삭제합니다. 스토리지의 속성 집합을 열거하는 데 사용할 수 있는 열거자에 대한 포인터를 제공하는 IPropertySetStorage::Enum 메서드도 있습니다.

호환성

IPropertySetStorage 및 IPropertyStorageNTFS 구현은 Windows 2000부터 사용할 수 있습니다. 이전 버전은 이러한 속성 집합에 액세스할 수 없습니다.

NTFS 구현은 속성 집합을 NTFS 파일의 대체 스트림에 저장합니다. 기본 파일이 복사될 때 대체 스트림을 복사해야 합니다.

주의

모든 파일 시스템에서 이러한 스트림을 지원하는 것은 아닙니다. 속성 집합이 있는 NTFS 파일이 FAT 볼륨에 복사되면 파일의 데이터만 복사됩니다. 속성 집합이 손실되었습니다. 이 경우 CopyFile 함수는 오류를 반환하지 않습니다.

 

주의

파일 복사를 수행하는 컴퓨터가 Windows 2000 이상에서 실행되는 컴퓨터가 아닌 경우 속성 집합이 손실될 수 있습니다. 예를 들어 Windows 95 운영 체제에서 실행 중인 컴퓨터가 NTFS 파일을 복사하는 경우 대상 파일도 NTFS 볼륨에 있더라도 속성 집합이 손실됩니다.

 

메서드

IPropertySetStorage의 NTFS 파일 시스템 구현은 다음 메서드를 지원합니다.

IPropertySetStorage::Create

현재 NTFS 파일 스토리지에 새 속성 집합을 만들고 반환 시 IPropertyStorage NTFS 파일 구현에 대한 인터페이스 포인터를 제공합니다. grfmode 매개 변수에 지정된 공유 모드는 STGM_SHARE_EXCLUSIVE 합니다.

IPropertySetStorage::Open

현재 속성 스토리지에서 기존 속성 집합을 엽니다. 반환할 때 IPropertyStorage의 NTFS 파일 구현에 대한 인터페이스 포인터를 제공합니다. grfmode 매개 변수에 지정된 공유 모드는 STGM_SHARE_EXCLUSIVE 합니다.

IPropertySetStorage::D 삭제

현재 속성 스토리지에서 설정된 속성을 삭제합니다.

IPropertySetStorage::Enum

STATPROPSETSTG 구조를 열거하는 데 사용되는 개체를 만듭니다. 각 STATPROPSETSTG 구조는 단일 속성 집합에 대한 데이터를 제공합니다.

설명

IPropertySetStorage 및 IPropertyStorage 저장소 속성의 NTFS 구현은 해당 파일의 내용에 영향을 주지 않고 파일에 설정합니다. 예를 들어 Default.htm HTML 파일에 설정된 속성을 만들면 해당 파일이 웹 브라우저에 제대로 표시됩니다. 즉, CreateFile 함수를 사용하여 파일에 액세스할 때 이러한 두 인터페이스를 사용하여 파일에 대한 변경 내용을 검색할 수 없습니다.

IPropertySetStorage의 NTFS 구현은 NTFS 버전 5.0 볼륨의 파일에 속성 집합을 쓰는 데 사용할 때 안전한 구현을 제공합니다. 이러한 속성 집합은 시스템 오류가 발생하더라도 구현에 의해 손상될 수 없습니다. 예를 들어 속성 집합이 디스크로 플러시되는 동안 IPropertyStorage::Commit 을 호출하는 동안 시스템에 대한 전원이 실패하는 경우 속성 집합은 중간 상태로 남아 있는 적이 없습니다. 속성 집합의 이전 버전이 유지되거나 모든 업데이트가 저장됩니다.

IPropertySetStorage의 NTFS 구현은 다음과 같은 방법으로 복합 파일 구현과 다릅니다.

  • IEnumSTATPROPSETSTG 인터페이스에서 가져온 STATPROPSETSTG 구조체에는 값이 항상 0(CLSID_NULL)인 clsid 멤버가 포함됩니다. 복합 파일 구현을 사용하면 단순하지 않은 속성 집합에 대한 스토리지 및 스트림 개체 참조) 속성 집합에 대해 올바른 clsid 멤버가 반환됩니다.

  • StgCreateStorageEx 또는 StgOpenStorageEx 함수를 사용하여 IPropertySetStorage 인터페이스 포인터의 NTFS 구현을 가져올 때 grfmode 매개 변수는 복합 파일 구현과 동일한 규칙을 따라야 합니다.

    또한 다음 플래그를 사용할 수 없습니다.

    STGM_SIMPLE, STGM_TRANSACTED, STGM_CONVERT, STGM_PRIORITYSTGM_DELETEONRELEASE.

  • StgCreateStorageEx 또는 StgOpenStorageEx 함수에서 NTFS IPropertySetStorage 인터페이스를 가져오는 경우 공유 모드는 주로 파일 자체를 여는 인스턴스가 아니라 해당 인터페이스의 다른 인스턴스에 적용됩니다. 예를 들어 grfmode 매개 변수가 STGM_READWRITE|로 설정된 StgOpenStorageEx 함수를 호출하여 NTFS IPropertySetStorage 인터페이스를 여는 경우 STGM_SHARE_EXCLUSIVECreateFile 함수를 사용하여 파일을 열 수 있습니다.

    이 인터페이스를 여는 이러한 동시 인스턴스에는 다음과 같은 제약 조건이 적용됩니다. CreateFile 함수의 dwShareMode 매개 변수는 FILE_SHARE_READ 플래그를 지정해야 하며 dwAccess 매개 변수는 DELETE 플래그를 지정하지 않아야 합니다. 또한 이러한 함수는 파일에 대한 DELETE 액세스 권한이 필요하므로 이러한 속성 집합 인터페이스가 열려 있는 파일에서 DeleteFileMoveFile 함수를 호출해서는 안 됩니다.

  • NTFS IPropertySetStorage 메서드가 읽기 전용으로 열려 있고 파일에 현재 속성 집합이 없는 경우 반환된 개체는 실제로 파일을 열지 않습니다. 따라서 원래 열린 작업의 공유 모드가 거부되더라도 해당 파일의 다른 열기가 성공합니다.

    예제; NTFS IPropertySetStorage 가 STGM_READ 모드에서 열려 있는 경우 | STGM_SHARE_EXCLUSIVE 파일에 속성 집합이 없으므로 파일 STGM_READWRITE 동시에 열 수 있습니다 . STGM_SHARE_EXCLUSIVE.

IPropertyStorage-NTFS 파일 시스템 구현

IPropertySetStorage

IPropertyStorage

IStorage::EnumElements

PROPSETFLAG 상수

STATPROPSETSTG