다음을 통해 공유


IoReadPartitionTable 함수(ntddk.h)

IoReadPartitionTable 루틴은 사용되지 않으며 기존 드라이버를 지원하기 위해만 제공됩니다. 새 드라이버는 IoReadPartitionTableEx를 사용해야 합니다. IoReadPartitionTable 은 지정된 섹터 크기를 가진 디스크의 파티션 목록을 읽고 인식된 각 파티션에 대한 파티션 목록에 항목을 만듭니다.

구문

NTSTATUS IoReadPartitionTable(
  [in]  PDEVICE_OBJECT            DeviceObject,
  [in]  ULONG                     SectorSize,
  [in]  BOOLEAN                   ReturnRecognizedPartitions,
  [out] _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
);

매개 변수

[in] DeviceObject

파티션을 읽을 디스크의 디바이스 개체에 대한 포인터입니다.

[in] SectorSize

디스크의 섹터 크기를 지정합니다.

[in] ReturnRecognizedPartitions

인식된 파티션 또는 모든 파티션 항목만 반환해야 하는지 여부를 나타냅니다.

[out] PartitionBuffer

초기화되지 않은 주소에 대한 포인터입니다. 성공하면 IoReadPartitionTable 은 페이지가 없는 풀에서 이 버퍼에 대한 메모리를 할당하고 드라이브 레이아웃 정보를 반환합니다.

반환 값

이 루틴은 하나 이상의 섹터 테이블을 읽은 경우 STATUS_SUCCESS 값을 반환합니다. 그렇지 않으면 오류 상태 반환하고 PartitionBuffer의 포인터를 NULL로 설정합니다.

설명

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

디스크 디바이스 드라이버는 드라이버 초기화 중에 이 루틴을 호출합니다.

ExFreePool을 사용하여 이 루틴에 의해 할당된 PartitionBuffer의 할당을 취소하는 것은 호출자의 책임입니다.

이 루틴에서 사용하는 알고리즘은 부울 값 ReturnRecognizedPartitions에 의해 결정됩니다.

  • 각 파티션 테이블을 읽고 유효하고 인식된 각 파티션에 대해 PARTITION_INFORMATION 항목 배열의 요소를 채웁니다. 파티션 정보 항목의 배열은 DRIVE_LAYOUT_INFORMATION 구조체의 PartitionEntry 멤버가 가리켰습니다. DRIVE_LAYOUT_INFORMATION 구조체는 PartitionBuffer가 가리키는 위치에 있습니다. 확장 파티션은 다른 파티션 테이블을 찾기 위해 배치되지만 해당 파티션에 대한 항목은 빌드되지 않습니다.
각 파티션 테이블을 읽고 각 항목에 대해 파티션 정보 항목을 입력합니다. 확장 파티션은 디스크에서 각 파티션을 찾을 수 있습니다. 항목도 이러한 항목에 대해 빌드됩니다.

요구 사항

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

추가 정보

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable