Função IoSetPartitionInformation (ntddk.h)

A rotina IoSetPartitionInformation é obsoleta e é fornecida apenas para dar suporte a drivers existentes. Novos drivers devem usar IoSetPartitionInformationEx.

IoSetPartitionInformation define o tipo de partição e o número em uma entrada de tabela de partição para o disco representado por DeviceObject.

Sintaxe

NTSTATUS IoSetPartitionInformation(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          SectorSize,
  [in] ULONG          PartitionNumber,
  [in] ULONG          PartitionType
);

Parâmetros

[in] DeviceObject

Ponteiro para o objeto de dispositivo que representa o dispositivo no qual o tipo de partição deve ser definido.

[in] SectorSize

Especifica o tamanho, em bytes, dos setores no disco.

[in] PartitionNumber

Especifica o número da partição no dispositivo cujo tipo de partição deve ser definido.

[in] PartitionType

Especifica o tipo da partição. Para obter uma lista de alguns dos principais tipos de partição , consulte PARTITION_INFORMATION.

Retornar valor

Se IoSetPartitionInformation retornar STATUS_SUCCESS, o driver de disco atualizará sua noção do tipo de partição para essa partição em sua extensão de dispositivo.

Comentários

IoSetPartitionInformation 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_SET_PARTITION_INFO .

Essa rotina é chamada quando um driver de dispositivo de disco é solicitado a definir o tipo de partição em uma entrada de tabela de partição por uma solicitação de IRP_MJ_DEVICE_CONTROL. Essa solicitação geralmente é emitida pelo utilitário de formato , que executa funções de controle de E/S na partição. O driver passa um ponteiro para o objeto de 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. Como as rotinas HAL subjacentes a IoSetPartitionInformation foram desenvolvidas antes do suporte ao particionamento dinâmico ser implementado, elas não distinguem entre a partição ordinal (que é a ordem de uma partição em um disco) e o número da partição (o número de partição atribuído a uma partição para identificá-la ao sistema). Os drivers devem chamar IoSetPartitionInformation usando o número ordinal da partição e não o número de partição real.

Essa rotina é síncrona e deve ser chamada pela rotina dispatch 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 entrar em um estado de espera ao emitir a solicitação de controle de dispositivo para definir o tipo de partição para o dispositivo.

Essa rotina opera sob a suposição de que o número de partição passado pelo driver de disco realmente existe.

Essa rotina deve ser chamada em IRQL = PASSIVE_LEVEL porque usa um objeto de evento kernel para sincronizar a conclusão de E/S no dispositivo. O evento não pode ser definido como o estado Sinalizado sem enfileirar e executar a rotina especial de APC do kernel do sistema de E/S para conclusão de E/S.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Ntddk.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte a seção Comentários)
Regras de conformidade da DDI HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Confira também

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable