Compartilhar via


Função IoReadPartitionTable (ntddk.h)

A rotina de IoReadPartitionTable é obsoleta e é fornecida apenas para dar suporte a drivers existentes. Os novos drivers devem usar IoReadPartitionTableEx . IoReadPartitionTable lê uma lista de partições em um disco com um tamanho de setor especificado e cria uma entrada na lista de partições para cada partição reconhecida.

Sintaxe

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

Parâmetros

[in] DeviceObject

Ponteiro para o objeto do dispositivo para o disco cujas partições devem ser lidas.

[in] SectorSize

Especifica o tamanho dos setores no disco.

[in] ReturnRecognizedPartitions

Indica se apenas partições reconhecidas ou todas as entradas de partição devem ser retornadas.

[out] PartitionBuffer

Ponteiro para um endereço não inicializado. Se tiver êxito, IoReadPartitionTable alocará a memória desse buffer do pool nãopagado e retornará as informações de layout da unidade nele.

Valor de retorno

Essa rotina retorna um valor de STATUS_SUCCESS se pelo menos uma tabela do setor foi lida. Caso contrário, ele retorna um status de erro e define o ponteiro em PartitionBuffer para NULL.

Observações

IoReadPartitionTable só deve ser usado por drivers de disco. Em vez disso, outros drivers devem usar a solicitação de E/S do disco IOCTL_DISK_GET_DRIVE_LAYOUT.

Os drivers de dispositivo de disco chamam essa rotina durante a inicialização do driver.

É responsabilidade do chamador desalocar a PartitionBuffer que foi alocada por essa rotina com ExFreePool.

O algoritmo usado por essa rotina é determinado pelo valor booliano ReturnRecognizedPartitions:

  • Leia cada tabela de partição e, para cada partição válida e reconhecida encontrada, preencha um elemento em uma matriz de entradas PARTITION_INFORMATION. A matriz de entradas de informações de partição é apontada pelo partitionEntry membro de uma estrutura DRIVE_LAYOUT_INFORMATION. A estrutura de DRIVE_LAYOUT_INFORMATION é encontrada no local apontado por partitionBuffer. As partições estendidas estão localizadas para localizar outras tabelas de partição, mas nenhuma entrada é criada para elas.
Leia cada tabela de partição e, para cada entrada, preencha uma entrada de informações de partição. As partições estendidas estão localizadas para localizar cada partição no disco; as entradas também são criadas para elas.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ntddk.h (inclua Ntddk.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Consulte também

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable