Compartilhar via


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)

Consulte também

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation