Función IoWritePartitionTable (ntddk.h)

La rutina IoWritePartitionTable está obsoleta y solo se proporciona para admitir controladores existentes. Los nuevos controladores deben usar IoWritePartitionTableEx.

IoWritePartitionTable escribe tablas de partición de las entradas del búfer de lista de particiones para cada partición del disco representado por el objeto de dispositivo especificado.

Sintaxis

NTSTATUS IoWritePartitionTable(
  [in] PDEVICE_OBJECT            DeviceObject,
  [in] ULONG                     SectorSize,
  [in] ULONG                     SectorsPerTrack,
  [in] ULONG                     NumberOfHeads,
  [in] _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
);

Parámetros

[in] DeviceObject

Puntero al objeto de dispositivo que representa el disco cuyas tablas de partición se van a escribir.

[in] SectorSize

Especifica el tamaño en bytes de sectores del dispositivo.

[in] SectorsPerTrack

Especifica el tamaño de la pista en el dispositivo.

[in] NumberOfHeads

Especifica el número de pistas por cilindro.

[in] PartitionBuffer

Puntero al búfer de diseño de unidad que contiene las entradas de la lista de particiones. Para obtener información más detallada, consulte DRIVE_LAYOUT_INFORMATION.

Valor devuelto

IoWritePartitionTablo devuelve un código de estado de STATUS_SUCCESS si todas las escrituras se completaron sin errores. En caso de error, los códigos de error devueltos por IoWritePartitionTable pueden incluir, pero no se limitan a, la siguiente lista:

Código devuelto Descripción
STATUS_DEVICE_NOT_READY Indica un error al leer la geometría de disco correcta.
STATUS_INSUFFICIENT_RESOURCES Indica un error al asignar los recursos necesarios (por ejemplo, memoria del montón, IRP, etc.).
STATUS_UNSUCCESSFUL Indica que el sector cero no tenía la firma de disco MBR esperada.

Comentarios

Los controladores de disco solo deben usar IoWritePartitionTable. Otros controladores deben usar la solicitud de E/S de disco IOCTL_DISK_SET_DRIVE_LAYOUT en su lugar.

Se llama a IoWritePartitionTable cuando se solicita un controlador de dispositivo de disco para establecer el tipo de partición en una entrada de tabla de particiones o para volver a particionar el disco mediante una solicitud de IRP_MJ_DEVICE_CONTROL. Por lo general, la utilidad de formato emite la solicitud de control de dispositivos, que realiza funciones de control de E/S en las particiones y los discos de la máquina.

Para restablecer un tipo de partición, el controlador pasa un puntero al objeto de dispositivo que representa el disco físico y el número de la partición asociada al objeto de dispositivo que la utilidad de formato tiene abierta. Cuando un disco se va a volver a particionar dinámicamente, el controlador de disco debe anular su conjunto de objetos de dispositivo que representan las particiones de disco actuales y crear un nuevo conjunto de objetos de dispositivo que representen las nuevas particiones en el disco.

Las aplicaciones que crean y eliminan particiones y requieren descripciones completas del sistema deben llamar a IoReadPartitionTable con ReturnRecognizedPartitions establecido en FALSE. La utilidad de formato del sistema puede modificar la estructura de diseño de la unidad para reflejar una nueva configuración del disco.

IoWritePartitionTable es sincrónico. Debe llamarlo la rutina dispatch del controlador de disco o mediante un subproceso de controlador. Por lo tanto, todos los subprocesos del sistema de archivos y de usuario deben estar preparados para entrar en un estado de espera al emitir la solicitud de control de dispositivo para restablecer los tipos de partición del dispositivo.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ntddk.h (incluya Ntddk.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

Consulte también

IoCreateDevice

IoReadPartitionTable

IoSetPartitionInformation