Función IoSetPartitionInformation (ntddk.h)

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

IoSetPartitionInformation establece el tipo de partición y el número de una entrada de tabla de particiones para el disco representado por DeviceObject.

Sintaxis

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

Parámetros

[in] DeviceObject

Puntero al objeto de dispositivo que representa el dispositivo en el que se va a establecer el tipo de partición.

[in] SectorSize

Especifica el tamaño, en bytes, de sectores del disco.

[in] PartitionNumber

Especifica el número de partición en el dispositivo cuyo tipo de partición se va a establecer.

[in] PartitionType

Especifica el tipo de la partición. Para obtener una lista de algunos de los tipos de partición de clave, consulte PARTITION_INFORMATION.

Valor devuelto

Si IoSetPartitionInformation devuelve STATUS_SUCCESS, el controlador de disco actualiza su noción del tipo de partición para esta partición en su extensión de dispositivo.

Comentarios

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

Se llama a esta rutina cuando se pide a un controlador de dispositivo de disco que establezca el tipo de partición en una entrada de tabla de particiones mediante una solicitud de IRP_MJ_DEVICE_CONTROL. Esta solicitud se emite generalmente por la utilidad de formato, que realiza funciones de control de E/S en la 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. Dado que las rutinas HAL que subyacen a IoSetPartitionInformation se desarrollaron antes de implementar la compatibilidad con la creación de particiones dinámicas, no distinguen entre el ordinal de partición (es decir, el orden de una partición en un disco) y el número de partición (el número de partición asignado a una partición para identificarlo en el sistema). Los controladores deben llamar a IoSetPartitionInformation mediante el número ordinal de la partición y no el número de partición real.

Esta rutina es sincrónica y debe ser llamada por la rutina dispatch del controlador de disco o por 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 establecer el tipo de partición para el dispositivo.

Esta rutina funciona bajo la suposición de que el número de partición pasado por el controlador de disco existe realmente.

Se debe llamar a esta rutina en IRQL = PASSIVE_LEVEL porque usa un objeto de evento de kernel para sincronizar la finalización de E/S en el dispositivo. El evento no se puede establecer en el estado Signaled sin poner en cola ni ejecutar la rutina de APC especial del kernel del sistema de E/S para la finalización de E/S.

Requisitos

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

Consulte también

IoReadPartitionTable

IoSetPartitionInformationEx

IoWritePartitionTable