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.
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) |