REPARSE_DATA_BUFFER 구조체(ntifs.h)

REPARSE_DATA_BUFFER 구조에는 Microsoft 재분석 지점에 대한 재분석 지점 데이터가 포함됩니다. 대신 REPARSE_DATA_BUFFER_EX 사용할 수 있습니다. (타사 재분석 지점 소유자는 대신 REPARSE_GUID_DATA_BUFFER 구조를 사용해야 합니다.)

구문

typedef struct _REPARSE_DATA_BUFFER {
  ULONG  ReparseTag;
  USHORT ReparseDataLength;
  USHORT Reserved;
  union {
    struct {
      USHORT SubstituteNameOffset;
      USHORT SubstituteNameLength;
      USHORT PrintNameOffset;
      USHORT PrintNameLength;
      ULONG  Flags;
      WCHAR  PathBuffer[1];
    } SymbolicLinkReparseBuffer;
    struct {
      USHORT SubstituteNameOffset;
      USHORT SubstituteNameLength;
      USHORT PrintNameOffset;
      USHORT PrintNameLength;
      WCHAR  PathBuffer[1];
    } MountPointReparseBuffer;
    struct {
      UCHAR DataBuffer[1];
    } GenericReparseBuffer;
  } DUMMYUNIONNAME;
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;

멤버

ReparseTag

점 태그를 다시 분석합니다. Microsoft 재분석 지점 태그여야 합니다. (다음 설명 섹션 참조하세요.)

ReparseDataLength

DataBuffer가 가리키는 버퍼의 재분석 데이터의 크기(바이트)입니다.

Reserved

연결된 파일 개체의 FileName 멤버가 가리키는 파일 이름의 분리되지 않은 부분의 길이(바이트)입니다. FileName 멤버에 대한 자세한 내용은 FILE_OBJECT< 참조하세요. 이 멤버는 I/O가 STATUS_REPARSE 실패하는 경우에만 만들기 작업에 유효합니다. 재분석 데이터에 대한 재분석 지점 설정 또는 쿼리와 같은 다른 모든 목적을 위해 이 멤버는 예약된 것으로 처리됩니다.

DUMMYUNIONNAME

DUMMYUNIONNAME.SymbolicLinkReparseBuffer

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.SubstituteNameOffset

PathBuffer 배열의 대체 이름 문자열 오프셋(바이트)입니다. 배열 인덱을 가져오려면 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.SubstituteNameLength

대체 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL로 종료된 경우 SubstituteNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PrintNameOffset

PathBuffer 배열의 인쇄 이름 문자열 오프셋(바이트)입니다. 배열 인덱을 가져오려면 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PrintNameLength

인쇄 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL로 종료된 경우 PrintNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.Flags

기호 링크가 절대 링크인지 상대 링크인지 여부를 나타냅니다. Flags에 SYMLINK_FLAG_RELATIVE 포함된 경우 PathBuffer 배열(offset SubstituteNameOffset)에 포함된 기호 링크가 상대 기호 링크로 처리됩니다. 그렇지 않으면 절대 기호 링크로 처리됩니다.

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PathBuffer[1]

경로 문자열의 첫 번째 문자입니다. 이 문자 뒤에는 나머지 문자열이 메모리에 추가됩니다. 경로 문자열에는 대체 이름 문자열과 인쇄 이름 문자열이 포함됩니다. 대체 이름 및 인쇄 이름 문자열은 PathBuffer에서 임의의 순서로 표시할 수 있습니다. PathBuffer에서 대체 이름 및 인쇄 이름 문자열을 찾으려면 SubstituteNameOffset, SubstituteNameLength, PrintNameOffsetPrintNameLength 멤버를 사용합니다.

DUMMYUNIONNAME.MountPointReparseBuffer

DUMMYUNIONNAME.MountPointReparseBuffer.SubstituteNameOffset

PathBuffer 배열의 대체 이름 문자열 오프셋(바이트)입니다. 배열 인덱을 가져오려면 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.

DUMMYUNIONNAME.MountPointReparseBuffer.SubstituteNameLength

대체 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL로 종료된 경우 SubstituteNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.

DUMMYUNIONNAME.MountPointReparseBuffer.PrintNameOffset

PathBuffer 배열의 인쇄 이름 문자열 오프셋(바이트)입니다. 배열 인덱을 가져오려면 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.

DUMMYUNIONNAME.MountPointReparseBuffer.PrintNameLength

인쇄 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL로 종료된 경우 PrintNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.

DUMMYUNIONNAME.MountPointReparseBuffer.PathBuffer[1]

경로 문자열의 첫 번째 문자입니다. 이 문자 뒤에는 나머지 문자열이 메모리에 추가됩니다. 경로 문자열에는 대체 이름 문자열과 인쇄 이름 문자열이 포함됩니다. 대체 이름 및 인쇄 이름 문자열은 PathBuffer에서 임의의 순서로 표시할 수 있습니다. PathBuffer에서 대체 이름 및 인쇄 이름 문자열을 찾으려면 SubstituteNameOffset, SubstituteNameLength, PrintNameOffsetPrintNameLength 멤버를 사용합니다.

DUMMYUNIONNAME.GenericReparseBuffer

DUMMYUNIONNAME.GenericReparseBuffer.DataBuffer[1]

재분석 지점에 대한 Microsoft 정의 데이터가 포함된 버퍼에 대한 포인터입니다.

설명

REPARSE_DATA_BUFFER 구조는 I/O 관리자뿐만 아니라 Microsoft 파일 시스템, 필터 및 미니필터 드라이버에서 재분석 지점에 대한 데이터를 저장하는 데 사용됩니다.

이 구조는 Microsoft 재분석 지점에만 사용할 수 있습니다. 타사 재분석 지점 소유자는 대신 REPARSE_GUID_DATA_BUFFER 구조를 사용해야 합니다.

Microsoft 재분석 지점은 REPARSE_DATA_BUFFER 구조 또는 REPARSE_GUID_DATA_BUFFER 구조를 사용할 수 있습니다.

공용 구조체에서 GenericReparseBuffer 구조를 사용하여 IO_REPARSE_TAG_XXX 태그에 대한 페이로드를 해석하거나 필요에 따라 다음과 같이 공용 구조체 내의 다른 구조체 중 하나를 사용할 수 있습니다.

  • FileTag가 IO_REPARSE_TAG_SYMLINK 때 SymbolicLinkReparseBuffer 구조를 사용합니다.

  • FileTag가 IO_REPARSE_TAG_MOUNT_POINT 경우 MountPointReparseBuffer 구조를 사용합니다.

지점 태그 재분석에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

요구 사항

요구 사항
헤더 ntifs.h(Ntifs.h, Fltkernel.h 포함)

추가 정보

FILE_OBJECT

FILE_REPARSE_POINT_INFORMATION

IRP_MJ_FILE_SYSTEM_CONTROL 대한 FLT_PARAMETERS

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_SET_REPARSE_POINT

FltFsControlFile

FltTagFile

FltTagFileEx

FltUntagFile

IRP_MJ_FILE_SYSTEM_CONTROL

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER_EX

REPARSE_GUID_DATA_BUFFER

ZwFsControlFile