다음을 통해 공유


EXTENDED_CREATE_INFORMATION 구조체(wdm.h)

EXTENDED_CREATE_INFORMATION 구조체는 NtCreateFileCreateOption 매개 변수에서 FILE_CONTAINS_EXTENDED_CREATE_INFORMATION 플래그가 설정된 경우 NtCreateFile의 EaBuffer 필드입니다.

구문

typedef struct _EXTENDED_CREATE_INFORMATION {
  LONGLONG                          ExtendedCreateFlags;
  PVOID                             EaBuffer;
  ULONG                             EaLength;
  PEXTENDED_CREATE_DUAL_OPLOCK_KEYS DualOplockKeys;
} EXTENDED_CREATE_INFORMATION, *PEXTENDED_CREATE_INFORMATION;

멤버

ExtendedCreateFlags

확장된 만들기에 대한 플래그입니다. ExtendedCreateFlags는 다음 값 중 하나일 수 있습니다. 이러한 플래그 중 하나를 지정하면 NtCreateFile의 파일 개체는 FileObjectExtension에서 복사 의도에 대해 열린 것으로 표시됩니다. 필터는 IoCheckFileObjectOpenedAsCopySource 또는 IoCheckFileObjectOpenedAsCopyDestination을 호출하여 이 저장된 상태에 대해 검사 수 있습니다.

플래그 의미
EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY (0x00000001) 파일이 파일 복사본의 원본 파일로 열려 있음을 알 수 있습니다.
EX_CREATE_FLAG_FILE_DEST_OPEN_FOR_COPY (0x00000002) 파일이 파일 복사본의 대상 파일로 열리고 있음을 나타냅니다.

사용자 모드 프로세스에서 생성 시 이러한 플래그를 제공할 수 있으므로 위의 플래그 중 하나가 있으면 파일 개체에 대한 읽기/쓰기(I/O 작업)가 신뢰할 수 있는 것으로 충분하지 않습니다.

EaBuffer

확장 특성 버퍼에 대한 포인터입니다.

EaLength

EaBuffer가 가리키는 버퍼의 길이입니다.

DualOplockKeys

설명

다음 예제에서는 NtCreateFileEXTENDED_CREATE_INFORMATION 구조를 제공하여 EaBufferEaLength를 내부적으로 올바르게 래핑하는 방법을 보여 있습니다.

// Input parameters to NtCreateFile. Obtaining these
// values is not shown in this sample.

HANDLE SourceFile; 
ACCESS_MASK DesiredAccess; 
OBJECT_ATTRIBUTES ObjectAttributes; 
IO_STATUS_BLOCK IoStatus; 
ULONG FileAttributes; 
ULONG ShareAccess; 
ULONG CreateDisposition; 
ULONG CreateOptions; 
PVOID EaBuffer = NULL; 
ULONG EaLength = 0; 
EXTENDED_CREATE_INFORMATION ExtendedCreateInfo; 

// Populate the extended create info. The
// ExtendedCreateFlags field could also be
// EX_CREATE_FLAG_FILE_DESTINATION_OPEN_FOR_COPY.
 
ExtendedCreateInfo.EaBuffer = EaBuffer; 
ExtendedCreateInfo.EaLength = EaLength; 
ExtendedCreateInfo.ExtendedCreateFlags = EX_CREATE_FLAG_FILE_SOURCE_OPEN_FOR_COPY; 

// Set the create option flag to indicate the
// EaBuffer actually contains extended create info.
 
CreateOptions |= FILE_CONTAINS_EXTENDED_CREATE_INFORMATION; 

// Open the file 

Status = NtCreateFile(&SourceFile, 
                      DesiredAccess, 
                      &ObjectAttributes, 
                      &IoStatus, 
                      NULL, 
                      FileAttributes, 
                      SharseAccess, 
                      CreateDisposition, 
                      CreateOptions, 
                      &ExtendedCreateInfo, 
                      sizeof(EXTENDED_CREATE_INFORMATION));

자세한 내용은 커널 모드 파일 복사 및 복사 파일 검색 시나리오를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 11, 버전 22H2
머리글 wdm.h(Wdm.h 포함)

추가 정보

IoCheckFileObjectOpenedAsCopyDestination

IoCheckFileObjectOpenedAsCopySource

NtCopyFileChunk

NtCreateFile