IoSetPartitionInformationEx 함수(ntddk.h)

DeviceObject로 표시되는 디스크의 경우 IoSetPartitionInformationEx 루틴은 SET_PARTITION_INFORMATION_EX 구조에 지정된 정보를 사용하여 파티션 테이블 항목을 초기화합니다.

구문

NTSTATUS IoSetPartitionInformationEx(
  [in] PDEVICE_OBJECT                DeviceObject,
  [in] ULONG                         PartitionNumber,
  [in] _SET_PARTITION_INFORMATION_EX *PartitionInfo
);

매개 변수

[in] DeviceObject

파티션 유형을 설정할 디바이스를 나타내는 디바이스 개체에 대한 포인터입니다.

[in] PartitionNumber

파티션 유형을 설정할 디바이스의 파티션 번호를 지정합니다.

[in] PartitionInfo

PartitionType 멤버가 파티션의 형식을 지정하는 구조체입니다. 현재 정의된 PartitionType 값의 경우 PARTITION_INFORMATION.

반환 값

IoSetPartitionInformationEx가 STATUS_SUCCESS 반환하는 경우 디스크 드라이버는 디바이스 확장에서 이 파티션에 대한 파티션 형식의 개념을 업데이트합니다.

설명

IoSetPartitionInformationEx 는 디스크 드라이버에서만 사용해야 합니다. 다른 드라이버는 IOCTL_DISK_SET_PARTITION_INFO_EX 디스크 I/O 요청을 대신 사용해야 합니다.

이 루틴은 디스크 디바이스 드라이버가 IRP_MJ_DEVICE_CONTROL 요청에 의해 파티션 테이블 항목의 파티션 정보를 설정하도록 요청된 경우에 호출됩니다. 이 요청은 일반적으로 파티션에서 I/O 제어 함수를 수행하는 형식 유틸리티에서 발급됩니다. 드라이버는 실제 디스크를 나타내는 디바이스 개체와 형식 유틸리티가 열려 있는 디바이스 개체와 연결된 파티션의 수를 나타내는 포인터를 전달합니다. 동적 분할에 대한 지원이 구현되기 전에 IoSetPartitionInformationEx 를 기반으로 하는 HAL 루틴이 개발되었으므로 파티션 순서(디스크의 파티션 순서)와 파티션 번호 (시스템에 식별하기 위해 파티션에 할당된 파티션 번호)를 구분하지 않습니다. 드라이버는 실제 파티션 번호가 아닌 파티션의 서수 번호를 사용하여 IoSetPartitionInformationEx를 호출해야 합니다.

파티션이 MBR(마스터 부팅 레코드) 형식 파티션인 경우 IoSetPartitionInformationEx 는 파티션 스타일 및 부호 없는 문자로 표시되는 파티션 스타일을 설정하도록 제한됩니다. 이러한 값에 대한 자세한 내용은 SET_PARTITION_INFORMATION_MBR 참조하세요.

파티션이 GPT(GUID 파티션 테이블) 파티션인 경우 IoSetPartitionInformationEx 는 MBR 파티션의 경우처럼 정수 대신 GUID로 표시되는 파티션 스타일, 파티션 형식 값을 설정합니다. GUID로도 표시되는 파티션 ID입니다. 특성 집합(이러한 특성에 대한 설명은 확장 가능한 펌웨어 인터페이스 참조) 및 파티션의 유니코드 이름입니다. 이러한 값에 대한 자세한 내용은 SET_PARTITION_INFORMATION_GPT 참조하세요.

이 루틴은 동기적이며 디스크 드라이버의 Dispatch 루틴 또는 드라이버 스레드에서 호출해야 합니다. 따라서 모든 사용자 및 파일 시스템 스레드는 디바이스에 대한 파티션 유형을 설정하기 위해 디바이스 제어 요청을 실행할 때 대기 상태를 입력할 준비가 되어 있어야 합니다.

이 루틴은 디스크 드라이버가 전달한 파티션 번호가 실제로 존재한다는 가정 하에 작동합니다.

이 루틴은 커널 이벤트 개체를 사용하여 디바이스에서 I/O 완료를 동기화하기 때문에 IRQL = PASSIVE_LEVEL 호출해야 합니다. I/O 완료를 위해 I/O 시스템의 특수 커널 APC 루틴을 큐에 대기하고 실행하지 않고는 이벤트를 Signaled 상태로 설정할 수 없습니다.

요구 사항

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

추가 정보

IoReadPartitionTable

IoSetPartitionInformation

IoWritePartitionTable

SET_PARTITION_INFORMATION

SET_PARTITION_INFORMATION_EX