Compartilhar via


Função IoReadPartitionTable (ntddk.h)

A rotina IoReadPartitionTable é obsoleta e é fornecida apenas para dar suporte a drivers existentes. 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 de dispositivo do 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 para esse buffer do pool nãopagado e retornará as informações de layout da unidade nele.

Retornar valor

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

Comentários

IoReadPartitionTable só deve ser usado por drivers de disco. Em vez disso, outros drivers devem usar a solicitação de E/S de 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 o PartitionBuffer alocado 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 membro PartitionEntry de uma estrutura DRIVE_LAYOUT_INFORMATION . A estrutura 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
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Confira também

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_SET_DRIVE_LAYOUT

IoSetPartitionInformation

IoWritePartitionTable