다음을 통해 공유


IoSetPartitionInformation 함수(ntddk.h)

IoSetPartitionInformation 루틴은 사용되지 않으며 기존 드라이버를 지원하기 위해 제공됩니다. 새 드라이버는 IoSetPartitionInformationEx를 사용해야 합니다.

IoSetPartitionInformationDeviceObject가 나타내는 디스크에 대한 파티션 테이블 항목의 파티션 유형 및 번호를 설정합니다.

구문

NTSTATUS IoSetPartitionInformation(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          SectorSize,
  [in] ULONG          PartitionNumber,
  [in] ULONG          PartitionType
);

매개 변수

[in] DeviceObject

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

[in] SectorSize

디스크의 섹터 크기를 바이트 단위로 지정합니다.

[in] PartitionNumber

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

[in] PartitionType

파티션의 형식을 지정합니다. 일부 주요 파티션 형식 목록은 PARTITION_INFORMATION 참조하세요.

반환 값

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

설명

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

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

이 루틴은 동기적이며 디스크 드라이버의 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), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

추가 정보

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable