Compartilhar via


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)

Confira também

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation