다음을 통해 공유


ZwSetInformationFile 함수(wdm.h)

ZwSetInformationFile 루틴은 파일 개체에 대한 다양한 종류의 정보를 변경합니다.

통사론

NTSYSAPI NTSTATUS ZwSetInformationFile(
  [in]  HANDLE                 FileHandle,
  [out] PIO_STATUS_BLOCK       IoStatusBlock,
  [in]  PVOID                  FileInformation,
  [in]  ULONG                  Length,
  [in]  FILE_INFORMATION_CLASS FileInformationClass
);

매개 변수

[in] FileHandle

파일 개체에 대한 핸들입니다. 이 핸들은 ZwCreateFile 또는 ZwOpenFile성공적으로 호출하여 생성됩니다.

[out] IoStatusBlock

요청된 작업에 대한 최종 완료 상태 및 정보를 수신하는 IO_STATUS_BLOCK 구조체에 대한 포인터입니다. Information 멤버는 파일에 설정된 바이트 수를 받습니다.

[in] FileInformation

파일에 대해 설정할 정보가 들어 있는 버퍼에 대한 포인터입니다. 이 버퍼의 특정 구조는 FileInformationClass 매개 변수에 의해 결정됩니다. 예를 들어 FileInformationClass 매개 변수가 FileDispositionInformationEx 상수로 설정된 경우 이 매개 변수는 FILE_DISPOSITION_INFORMATION_EX 구조체에 대한 포인터여야 합니다.

[in] Length

FileInformation 버퍼의 크기(바이트)입니다.

[in] FileInformationClass

파일에 대해 설정할 FileInformation가리키는 버퍼에 제공된 정보 형식입니다. 디바이스 및 중간 드라이버는 다음 FILE_INFORMATION_CLASS 값 중 어느 것을 지정할 수 있습니다.

fileInformationClass 값 의미
FileBasicInformation FILE_BASIC_INFORMATION 구조에 제공된 정보를 변경합니다. 호출자가 DesiredAccess 매개 변수에 설정된 FILE_WRITE_ATTRIBUTES 플래그를 사용하여 파일을 열었어야 합니다.
fileDispositionInformation 파일을 닫을 때 삭제하거나 이전에 요청한 삭제를 취소하도록 요청합니다. 삭제 또는 취소 여부를 선택할 수 있는 항목은 FILE_DISPOSITION_INFORMATION 구조에 제공됩니다. 호출자가 DesiredAccess 매개 변수에 설정된 DELETE 플래그를 사용하여 파일을 열었어야 합니다.
fileDispositionInformationEx 파일을 삭제하거나 이전에 요청한 삭제를 취소하도록 요청합니다. 삭제 또는 취소 여부와 삭제 수행 시기 및 방법에 대한 설정은 FILE_DISPOSITION_INFORMATION_EX 구조에 제공됩니다. 호출자가 DesiredAccess 매개 변수에 설정된 DELETE** 플래그를 사용하여 파일을 열었어야 합니다.
FileEndOfFileInformation FILE_END_OF_FILE_INFORMATION 구조에 제공된 현재 파일 끝 정보를 변경합니다. 이 작업은 파일을 자르거나 확장할 수 있습니다. 호출자가 DesiredAccess 매개 변수에 설정된 FILE_WRITE_DATA 플래그를 사용하여 파일을 열었어야 합니다.
fileIoPriorityHintInformation 파일 핸들에 대한 현재 기본 IRP 우선 순위 힌트를 변경합니다. 새 값은 FILE_IO_PRIORITY_HINT_INFORMATION 구조체에 제공됩니다. 이 구조체는 8 바이트 정렬되어야 합니다.
FileLinkInformation FILE_LINK_INFORMATION 구조에 지정된 기존 파일에 대한 하드 링크를 만듭니다. 모든 파일 시스템에서 하드 링크를 지원하지는 않습니다. 예를 들어 FAT는 그렇지 않은 반면 NTFS는 수행합니다.
FilePositionInformation FILE_POSITION_INFORMATION 구조에 저장된 현재 파일 정보를 변경합니다.
fileRenameInformation FILE_RENAME_INFORMATION 구조에 제공된 현재 파일 이름을 변경합니다. 호출자에게 파일에 대한 DELETE 액세스 권한이 있어야 합니다.
FileShortNameInformation FILE_NAME_INFORMATION 구조에 제공된 현재 짧은 파일 이름을 변경합니다. 파일은 NTFS 볼륨에 있어야 하며 호출자는 DesiredAccess 매개 변수에 설정된 DesiredAccess DELETE 플래그를 사용하여 파일을 열어야 합니다.
fileIoCompletionNotificationInformation 파일 IO 완료 알림 플래그를 변경합니다. SetFileCompletionNotificationModes동일한 플래그를 지원합니다.
fileValidDataLengthInformation FILE_VALID_DATA_LENGTH_INFORMATION 구조에 제공된 파일의 현재 유효한 데이터 길이를 변경합니다. 파일은 NTFS 볼륨에 있어야 하며 호출자는 DesiredAccess 매개 변수에 설정된 FILE_WRITE_DATA 플래그를 사용하여 파일을 열어야 합니다. 관리자가 아닌 사용자 및 원격 사용자에게는 SeManageVolumePrivilege 권한이 있어야 합니다.
fileReplaceCompletionInformation 지정된 파일 핸들의 I/O 완료 포트를 변경하거나 제거합니다. 호출자는 포트 핸들과 완료 키를 지정하는 FILE_COMPLETION_INFORMATION 구조체에 대한 포인터를 제공합니다. 포트 핸들이 NULL이 아닌 경우 이 핸들은 파일 핸들과 연결할 새 I/O 완성 포트를 지정합니다. 파일 핸들과 연결된 I/O 완료 포트를 제거하려면 구조체의 포트 핸들을 NULL로 설정합니다. 포트 핸들을 가져오기 위해 사용자 모드 호출자는 CreateIoCompletionPort 함수를 호출할 수 있습니다.

반환 값

ZwSetInformationFile STATUS_SUCCESS 또는 적절한 오류 상태를 반환합니다.

발언

ZwSetInformationFile 파일에 대한 정보를 변경합니다. 특정 디바이스 또는 파일 시스템에서 지원하지 않는 FILE_XXX_INFORMATION 구조체의 멤버를 무시합니다.

FileInformationClass FileDispositionInformation설정한 경우 이후에 FileHandle ZwClose 전달하지만 다른 ZwXxx파일 루틴에는 전달할 수 없습니다. FileDispositionInformation 파일을 삭제하도록 표시하므로 파일을 닫는 것 이외의 핸들에서 후속 작업을 시도하는 것은 프로그래밍 오류입니다.

FileInformationClassFilePositionInformation설정하고 ZwCreateFile 대한 이전 호출에 CreateOptions 매개 변수에 FILE_NO_INTERMEDIATE_BUFFERING 플래그가 포함된 경우 FILE_POSITION_INFORMATION 구조체의 CurrentByteOffset 멤버에 대한 특정 제한 사항이 적용됩니다. 자세한 내용은 ZwCreateFile참조하세요.

FileInformationClassFileEndOfFileInformation설정하고 FILE_END_OF_FILE_INFORMATIONEndOfFile 멤버가 현재 파일 끝 표시를 넘어서는 오프셋을 지정하는 경우 ZwSetInformationFile 파일을 확장하고 확장자를 0으로 채우게 됩니다.

파일 작업에 대한 자세한 내용은 드라이버파일 사용 참조하세요.

ZwSetInformationFile 호출자는 IRQL = PASSIVE_LEVEL 및사용하도록 설정된 특수 커널 APC가 있는 실행되어야 합니다.

이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwSetInformationFile" 대신 "NtSetInformationFile" 이름을 사용해야 합니다.

커널 모드 드라이버의 호출의 경우 NtXxxZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. NtXxx ZwXxx 루틴 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴Nt 및 Zw 버전 사용 참조하세요.

요구 사항

요구
대상 플랫폼 보편적
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL(설명 섹션 참조)
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

참고 항목

CreateIoCompletionPort

FILE_BASIC_INFORMATION

FILE_COMPLETION_INFORMATION

FILE_DISPOSITION_INFORMATION

FILE_END_OF_FILE_INFORMATION

FILE_IO_PRIORITY_HINT_INFORMATION

FILE_LINK_INFORMATION

FILE_NAME_INFORMATION

FILE_POSITION_INFORMATION

FILE_RENAME_INFORMATION

FILE_VALID_DATA_LENGTH_INFORMATION

네이티브 시스템 서비스 루틴 Nt 및 Zw 버전 사용

ZwClose

ZwCreateFile

ZwOpenFile

ZwQueryInformationFile