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