Função IoWritePartitionTable (ntddk.h)
A rotina IoWritePartitionTable é obsoleta e é fornecida apenas para dar suporte a drivers existentes. Novos drivers devem usar IoWritePartitionTableEx.
IoWritePartitionTable grava tabelas de partição das entradas no buffer de lista de partição 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 de 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.
Retornar valor
IoWritePartitionTablo retorna um código status de STATUS_SUCCESS se todas as gravações foram concluídas sem erro. Em caso de falha, os códigos de erro retornados por IoWritePartitionTable podem incluir, mas não se limitam a, a 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. |
Comentários
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 de IRP_MJ_DEVICE_CONTROL. A solicitação de controle do 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 derrubar 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 comoFALSE. 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íncrono. 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 tipos de partição para o dispositivo.
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 de DDI | HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |