EXTENDED_CREATE_INFORMATION 구조체(wdm.h)
EXTENDED_CREATE_INFORMATION 구조체는 NtCreateFile의 CreateOption 매개 변수에서 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
설명
다음 예제에서는 NtCreateFile에 EXTENDED_CREATE_INFORMATION 구조를 제공하여 EaBuffer 및 EaLength를 내부적으로 올바르게 래핑하는 방법을 보여 있습니다.
// 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