다음을 통해 공유


IoWritePartitionTable 함수(ntddk.h)

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

IoWritePartitionTable 은 지정된 디바이스 개체가 나타내는 디스크의 각 파티션에 대한 파티션 목록 버퍼의 항목에서 파티션 테이블을 씁니다.

구문

NTSTATUS IoWritePartitionTable(
  [in] PDEVICE_OBJECT            DeviceObject,
  [in] ULONG                     SectorSize,
  [in] ULONG                     SectorsPerTrack,
  [in] ULONG                     NumberOfHeads,
  [in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);

매개 변수

[in] DeviceObject

파티션 테이블을 작성할 디스크를 나타내는 디바이스 개체에 대한 포인터입니다.

[in] SectorSize

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

[in] SectorsPerTrack

디바이스의 트랙 크기를 지정합니다.

[in] NumberOfHeads

실린더당 트랙 수를 지정합니다.

[in] PartitionBuffer

파티션 목록 항목이 포함된 드라이브 레이아웃 버퍼에 대한 포인터입니다. 자세한 내용은 DRIVE_LAYOUT_INFORMATION 참조하세요.

반환 값

IoWritePartitionTablo은 모든 쓰기가 오류 없이 완료된 경우 STATUS_SUCCESS 상태 코드를 반환합니다. 오류가 발생할 경우 IoWritePartitionTable 에서 반환된 오류 코드에는 다음 목록이 포함될 수 있지만 이에 국한되지는 않습니다.

반환 코드 설명
STATUS_DEVICE_NOT_READY 오류가 올바른 디스크 기하 도형을 읽은 것을 나타냅니다.
STATUS_INSUFFICIENT_RESOURCES 필요한 리소스(예: 힙 메모리, IRP 등)를 할당하지 못했음을 나타냅니다.
STATUS_UNSUCCESSFUL 섹터 0에 필요한 MBR 디스크 서명이 없음을 나타냅니다.

설명

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

IoWritePartitionTable 은 디스크 디바이스 드라이버가 파티션 테이블 항목에서 파티션 형식을 설정하거나 IRP_MJ_DEVICE_CONTROL 요청에 의해 디스크를 다시 분할하도록 요청할 때 호출됩니다. 디바이스 제어 요청은 일반적으로 컴퓨터의 파티션 및 디스크에서 I/O 제어 함수를 수행하는 형식 유틸리티에 의해 발급됩니다.

파티션 유형을 다시 설정하기 위해 드라이버는 물리적 디스크를 나타내는 디바이스 개체에 대한 포인터와 형식 유틸리티가 열려 있는 디바이스 개체와 연결된 파티션 수를 전달합니다. 디스크를 동적으로 다시 분할하려면 디스크 드라이버가 현재 디스크 파티션을 나타내는 디바이스 개체 집합을 분해하고 디스크의 새 파티션을 나타내는 새 디바이스 개체 집합을 만들어야 합니다.

파티션을 만들고 삭제하고 시스템에 대한 전체 설명이 필요한 애플리케이션은 ReturnRecognizedPartitionsFALSE로 설정된 IoReadPartitionTable을 호출해야 합니다. 디스크의 새 구성을 반영하도록 시스템 형식 유틸리티에서 드라이브 레이아웃 구조를 수정할 수 있습니다.

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

요구 사항

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

추가 정보

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation