Função IoWritePartitionTable (ntddk.h)
A rotina de IoWritePartitionTable é obsoleta e é fornecida apenas para dar suporte a drivers existentes. Os novos drivers devem usar IoWritePartitionTableEx .
IoWritePartitionTable grava tabelas de partição das entradas no buffer de lista de partições para cada partição no disco representado pelo objeto de dispositivo fornecido.
Sintaxe
NTSTATUS IoWritePartitionTable(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG SectorSize,
[in] ULONG SectorsPerTrack,
[in] ULONG NumberOfHeads,
[in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);
Parâmetros
[in] DeviceObject
Ponteiro para o objeto do dispositivo que representa o disco cujas tabelas de partição devem ser gravadas.
[in] SectorSize
Especifica o tamanho em bytes de setores no dispositivo.
[in] SectorsPerTrack
Especifica o tamanho da faixa no dispositivo.
[in] NumberOfHeads
Especifica o número de faixas por cilindro.
[in] PartitionBuffer
Ponteiro para o buffer de layout da unidade que contém as entradas da lista de partições. Para obter informações mais detalhadas, consulte DRIVE_LAYOUT_INFORMATION.
Valor de retorno
IoWritePartitionTablo retornará um código de status de STATUS_SUCCESS se todas as gravações tiverem sido concluídas sem erros. Em caso de falha, os códigos de erro retornados por IoWritePartitionTable podem incluir, mas não estão limitados à seguinte lista:
Código de retorno | Descrição |
---|---|
STATUS_DEVICE_NOT_READY | Indica uma falha ao ler a geometria de disco correta. |
STATUS_INSUFFICIENT_RESOURCES | Indica uma falha ao alocar os recursos necessários (por exemplo, memória de heap, IRPs etc.). |
STATUS_UNSUCCESSFUL | Indica que o setor zero não tinha a assinatura de disco MBR esperada. |
Observações
IoWritePartitionTable 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_SET_DRIVE_LAYOUT.
IoWritePartitionTable é chamado quando um driver de dispositivo de disco é solicitado a definir o tipo de partição em uma entrada de tabela de partição ou para reparticionar o disco por uma solicitação IRP_MJ_DEVICE_CONTROL. A solicitação de controle de dispositivo geralmente é emitida pelo utilitário de formato, que executa funções de controle de E/S nas partições e discos no computador.
Para redefinir um tipo de partição, o driver passa um ponteiro para o objeto do dispositivo que representa o disco físico e o número da partição associada ao objeto de dispositivo que o utilitário de formato abriu. Quando um disco deve ser reparticionado dinamicamente, o driver de disco deve remover seu conjunto de objetos de dispositivo que representam as partições de disco atuais e criar um novo conjunto de objetos de dispositivo que representam as novas partições no disco.
Aplicativos que criam e excluem partições e exigem descrições completas do sistema devem chamar IoReadPartitionTable com ReturnRecognizedPartitions definido como FALSE. A estrutura de layout da unidade pode ser modificada pelo utilitário de formato do sistema para refletir uma nova configuração do disco.
IoWritePartitionTable é síncrona. Ele deve ser chamado pela rotina de Expedição do driver de disco ou por um thread de driver. Portanto, todos os threads do sistema de arquivos e de usuário devem estar preparados para inserir um estado de espera ao emitir a solicitação de controle do dispositivo para redefinir os tipos de partição para o dispositivo.
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) |