Condividi tramite


IOCTL_DISK_GET_DRIVE_GEOMETRY_EX IOCTL (ntdddisk.h)

Restituisce informazioni sulla geometria del disco fisico (tipo di supporto, numero di cilindri, tracce per cilindro, settori per traccia e byte per settore).

La differenza tra IOCTL_DISK_GET_DRIVE_GEOMETRY_EX e la richiesta di IOCTL_DISK_GET_DRIVE_GEOMETRY precedente consiste nel fatto che IOCTL_DISK_GET_DRIVE_GEOMETRY_EX può recuperare informazioni da supporti di tipo MBR (Master Boot Record) e GPT (GUID Partition Table), mentre IOCTL_DISK_GET_DRIVE_GEOMETRY può leggere solo supporti in stile MBR.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Nessuno.

Lunghezza del buffer di input

Nessuno.

Buffer di output

Il driver restituisce i dati di DISK_GEOMETRY_EX nel buffer in corrispondenza di Irp->AssociatedIrp.SystemBuffer. Le dimensioni del buffer di output potrebbero non corrispondere a quella del buffer di input.

Lunghezza del buffer di output

Parameters.DeviceIoControl.OutputBufferLength nella posizione dello stack I/O di IRP indica le dimensioni, in byte, del buffer, che deve essere almeno (sizeof(DISK_GEOMETRY) + sizeof(LARGE_INTEGER)) e fino a (sizeof(DISK_GEOMETRY) + sizeof(LARGE_INTEGER) + sizeof(DISK_PARTITION_INFO) + sizeof(DISK_DETECTION_INFO)).

Blocco di stato

Il campo informazioni è impostato sulle dimensioni, in byte, dei dati restituiti.

Il campo stato restituisce uno dei valori seguenti:

  • STATUS_SUCCESS
  • STATUS_UNRECOGNIZED_MEDIA
  • STATUS_INVALID_PARAMETER
  • STATUS_INVALID_DEVICE_REQUEST
  • STATUS_INFO_LENGTH_MISMATCH
  • STATUS_INSUFFICIENT_RESOURCES
  • STATUS_BUFFER_TOO_SMALL

Osservazioni

Solo i chiamanti sopra Partmgr.sys possono chiamare questo IOCTL perché contiene informazioni sulla partizione del disco.

Questo IOCTL usa IOCTL_DISK_GET_DRIVE_GEOMETRY per ottenere la struttura DISK_GEOMETRY e IOCTL_DISK_GET_LENGTH_INFO per ottenere la struttura GET_LENGTH_INFORMATION. Entrambi i tipi di IOCTL sono supportati per l'uso a livello di disk.sys.

Fabbisogno

Requisito Valore
intestazione ntdddisk.h (include Ntdddisk.h)