MARK_HANDLE_INFO 구조체(winioctl.h)

지정된 파일 또는 디렉터리를 표시하는 데 사용되는 정보와 변경 내용에 대한 데이터로 USN(업데이트 시퀀스 번호) 변경 저널 레코드를 포함합니다. FSCTL_MARK_HANDLE 제어 코드에서 사용됩니다.

통사론

typedef struct _MARK_HANDLE_INFO {
  union {
    DWORD UsnSourceInfo;
    DWORD CopyNumber;
  } DUMMYUNIONNAME;
  DWORD  UsnSourceInfo;
  HANDLE VolumeHandle;
  DWORD  HandleInfo;
} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;

회원

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

변경되는 형식입니다.

이 작업은 파일을 만든 애플리케이션의 관점에서 외부적으로 파일 또는 디렉터리를 수정하지 않습니다.

스레드가 새 USN 레코드를 작성할 때 스레드가 해당 플래그를 설정하는 경우에만 이전 레코드의 원본 정보 플래그가 계속 존재합니다. 따라서 원본 정보 구조를 사용하면 애플리케이션이 바이러스 백신 필터와 같은 알려진 원본에 의해서만 설정된 USN 레코드를 필터링할 수 있습니다.

다음 값이 정의됩니다.

의미
USN_SOURCE_DATA_MANAGEMENT
0x00000001
이 작업은 운영 체제에서 수행한 파일 또는 디렉터리의 변경에 대한 정보를 제공합니다.

일반적인 용도는 원격 스토리지가 데이터를 외부에서 로컬 스토리지로 이동하는 경우입니다. 원격 스토리지는 계층적 스토리지 관리 소프트웨어입니다. 이러한 이동은 일반적으로 최소한 USN 레코드에 USN_REASON_DATA_OVERWRITE 플래그를 추가합니다. 그러나 데이터는 사용자 관점에서 변경되지 않았습니다. 레코드를 보유하는 USN_RECORD 구조체의 SourceInfo 멤버에 USN_SOURCE_DATA_MANAGEMENT 적어 두면 항목에 대한 쓰기 작업이 수행되지만 데이터가 변경되지 않은 것을 확인할 수 있습니다.

USN_SOURCE_AUXILIARY_DATA
0x00000002
이 작업은 파일 또는 디렉터리에 프라이빗 데이터 스트림을 추가합니다.

체크섬 정보를 추가하는 바이러스 탐지기가 그 예일 수 있습니다. 바이러스 탐지기가 항목을 수정하면 시스템에서 USN 레코드를 생성합니다. USN_SOURCE_AUXILIARY_DATA 수정으로 인해 애플리케이션 데이터가 변경되지 않았음을 나타냅니다.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
이 작업은 복제된 파일의 내용을 만들거나 업데이트합니다.

예를 들어 파일 복제 서비스는 복제된 디렉터리에서 파일을 만들거나 업데이트할 때 이 플래그를 설정합니다.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
클라우드 또는 서버에서 클라이언트 시스템에서 복제가 수행되고 있습니다.

VolumeHandle

파일 또는 디렉터리가 있는 볼륨에 대한 볼륨 핸들입니다. 볼륨 핸들을 가져오는 방법에 대한 자세한 내용은 설명 섹션을 참조하세요.

이 핸들은 이 작업에 대한 권한을 확인하는 데 필요합니다.

호출자에게는 SE_MANAGE_VOLUME_NAME 권한이 있어야 합니다. 자세한 내용은 권한참조하세요.

HandleInfo

VolumeHandle 멤버의 핸들 값으로 식별되는 파일 또는 디렉터리에 대한 추가 정보를 지정하는 플래그입니다.

의미
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
파일이 핸들을 닫을 때까지 조각 모음할 수 없는 것으로 표시됩니다.

MARK_HANDLE_PROTECT_CLUSTERS 표시된 핸들이 닫히면 파일의 클러스터가 이동하지 않을 것이라는 보장은 없습니다.

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
파일이 핸들을 닫을 때까지 조각 모음할 수 없는 것으로 표시됩니다.

Windows Server 2003: 이 플래그는 Windows Server 2003 SP1까지 지원되지 않습니다.

Windows XP: 이 플래그는 지원되지 않습니다.

MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
파일이 핸들을 닫을 때까지 조각 모음할 수 없는 것으로 표시됩니다.

Windows Server 2003: 이 플래그는 Windows Server 2003 SP1까지 지원되지 않습니다.

Windows XP: 이 플래그는 지원되지 않습니다.

MARK_HANDLE_REALTIME
0x00000020
파일은 실제 파일 형식에 관계없이 실시간 읽기 동작으로 표시됩니다. 이 플래그로 표시된 파일은 버퍼되지 않은 I/O열어야 합니다.

Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 플래그는 지원되지 않습니다.

MARK_HANDLE_NOT_REALTIME
0x00000040
MARK_HANDLE_REALTIME 플래그를 사용하여 이전에 실시간 읽기 동작으로 표시된 파일은 이 플래그를 사용하여 표시를 해제하여 실시간 동작을 제거할 수 있습니다. 이 플래그로 표시된 파일은 버퍼되지 않은 I/O열어야 합니다.

Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 플래그는 지원되지 않습니다.

MARK_HANDLE_READ_COPY
0x00000080
CopyNumber 멤버에 지정된 복사 번호를 읽기에 사용해야 했음을 나타냅니다. 이 플래그로 표시된 파일은 버퍼되지 않은 I/O열어야 합니다.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 플래그는 Windows 8 및 Windows Server 2012까지 지원되지 않습니다.

MARK_HANDLE_NOT_READ_COPY
0x00000100
이전에 MARK_HANDLE_READ_COPY 플래그를 사용하여 읽기 복사 동작으로 표시된 파일은 이 플래그를 사용하여 표시를 해제하여 읽기 복사 동작을 제거할 수 있습니다. 이 플래그로 표시된 파일은 버퍼되지 않은 I/O열어야 합니다.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 플래그는 Windows 8 및 Windows Server 2012까지 지원되지 않습니다.

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
메모리 매핑/캐시된 IO를 캐시되지 않은 IO와 혼합할 때 시스템은 캐시되지 않은 io가 발급될 때 캐시되지 않은 IO 범위에 대한 메모리 매핑을 제거하려고 시도합니다. 이러한 제거가 실패하는 경우 시스템은 일반적으로 손상된 상태로 이어질 수 있는 호출자에게 오류를 반환하지 않습니다(설명서에서 이 작업을 수행하지 말라고 말하는 이유). 이 플래그는 애플리케이션이 이 상황을 더 잘 처리할 수 있도록 지정된 핸들에 대한 제거 오류를 반환하도록 시스템에 지시합니다.

이 플래그는 Windows 8 및 Windows Server 2012까지 지원되지 않습니다.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
NTFS의 고도로 조각화된 파일은 여러 MFT 레코드를 사용하여 파일에 대한 모든 익스텐트를 설명합니다. 이 자식 MFT 레코드 목록(FRS 레코드라고도 함)은 특성 목록이라고 하는 구조에 의해 제어됩니다. 특성 목록의 크기는 128K로 제한됩니다. 특성 목록의 크기가 특정 임계값에 도달하면 NTFS는 익스텐트에서 백그라운드 압축을 트리거하므로 최소 자식 FRS 레코드 수가 사용됩니다. 이 플래그는 지정된 파일에 대해 이 FRS 압축 기능을 사용하지 않도록 설정합니다.

이 플래그는 Windows 10까지 지원되지 않습니다.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
USN 저널의 페이징 쓰기에서 지정된 UsnSourceInfo 값을 설정하도록 NTFS에 지시합니다. 시스템에서 지정된 변경을 수행한 스레드를 알지 못했기 때문에 일반적으로 이 작업은 페이징 쓰기에서 수행되지 않았습니다. 이는 재정의입니다. 이는 메모리 관리자가 사용 중인 FileObject에 이 상태가 연결된 경우에만 작동합니다.

이 플래그는 Windows 10까지 지원되지 않습니다.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
이 플래그를 설정하면 이 파일에 쓰기가 허용되지 않는다는 것을 시스템에 알릴 수 있습니다. 애플리케이션이 쓰기 액세스를 위해 파일을 열려고 하면 STATUS_ACCESS_DENIED 작업이 실패합니다. 쓰기가 표시되면 작업이 실패하고 STATUS_MARKED_TO_DISALLOW_WRITES

이 플래그는 Windows 10까지 지원되지 않습니다.

발언

볼륨에 대한 핸들을 검색하려면 lpFileName 매개 변수가 다음 형식의 문자열로 설정된 CreateFile 호출합니다.

"\\.\X:"

앞의 문자열에서 X 볼륨이 나타나는 드라이브를 식별하는 문자입니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
헤더 winioctl.h(Windows.h 포함)

참고 항목

FSCTL_MARK_HANDLE

USN_RECORD