Condividi tramite


IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)

Questo IOCTL restituisce triple che sono costituite da un nome di collegamento simbolico permanente per il volume (ovvero un punto di montaggio), un ID univoco per il volume e un nome di dispositivo non permanente (ad esempio "\Device\HarddiskVolume1") per il volume. L'input di questo IOCTL è una struttura MOUNTMGR_MOUNT_POINT che contiene un singolo triplo.

Se l'input triplo contiene un ID univoco o un nome di dispositivo non persistente, la richiesta recupera tutti i punti di montaggio associati (collegamenti simbolici), inclusi il nome percorso GUID del volume e le lettere di unità. Tuttavia, se la tripletta di input ha un collegamento simbolico, ma non specifica l'ID univoco o il nome del dispositivo, la richiesta restituisce solo una singola tripletta che contiene il collegamento simbolico fornito nell'input, insieme all'ID univoco e al nome del dispositivo. Il chiamante deve inviare un altro IOCTL con l'ID univoco o il nome del dispositivo per recuperare i punti di montaggio rimanenti.

Se l'input triplo è vuoto, il gestore di montaggio restituisce l'intero elenco di dispositivi montati.

Il gestore di montaggio restituisce triple che corrispondono a tutte le informazioni fornite dal chiamante. Se il chiamante invia l'ID univoco, il gestore di montaggio restituisce tutte le triple con tale ID univoco. Se il chiamante immette il nome percorso del volume o una lettera di unità come nome di collegamento simbolico, il gestore di montaggio restituisce solo la tripletta per il collegamento simbolico. Esiste una voce per ogni collegamento simbolico. Se il chiamante inserisce un nome percorso dispositivo, il gestore di montaggio restituisce solo le triple per il nome percorso del dispositivo. Se il chiamante inserisce un ID univoco e un collegamento simbolico, il gestore di montaggio restituisce una sola voce per tale collegamento simbolico. Un chiamante eseguirà questa operazione per ottenere il percorso del dispositivo. Se il chiamante non immette alcun percorso del dispositivo, ID univoco o collegamento simbolico, il gestore di montaggio restituisce tutte le voci/triple.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Il client di gestione montaggio inizializza la struttura di MOUNTMGR_MOUNT_POINT all'inizio del buffer in Irp->AssociatedIrp.SystemBuffer. Subito dopo questa struttura, il client MM carica il nome del collegamento simbolico, l'ID univoco e il nome del dispositivo, in tale ordine.

Lunghezza del buffer di input

Parameters.DeviceIoControl.InputBufferLength nella posizione dello stack I/O dell'IRP indica le dimensioni, in byte, del buffer di input, che deve essere maggiore o uguale a sizeof(MOUNTMGR_MOUNT_POINT).

Buffer di output

Gestione montaggio inizializza una struttura a lunghezza variabile di tipo MOUNTMGR_MOUNT_POINTS all'inizio del buffer all'inizio del buffer in Irp->AssociatedIrp.SystemBuffer. Il gestore di montaggio inserisce i punti di montaggio, associati al volume indicato, all'indirizzo a cui punta il MountPoints[] membro di questa struttura. Ogni punto di montaggio è rappresentato da una struttura MOUNTMGR_MOUNT_POINT definita nella sezione input per questo IOCTL.

Lunghezza del buffer di output

Parameters.DeviceIoControl.OutputBufferLength nella posizione dello stack I/O di IRP indica le dimensioni, in byte, del buffer di output, che deve essere maggiore o uguale a sizeof(MOUNTMGR_MOUNT_POINTS).

Buffer di input/output

N/D

Lunghezza del buffer di input/output

N/D

Blocco di stato

Se l'operazione ha esito positivo, il campo stato è impostato su STATUS_SUCCESS.

Se nell'elenco dei volumi montati non vengono trovati né l'ID univoco né il nome del dispositivo non persistente, il campo Stato è impostato su STATUS_INVALID_PARAMETER.

Se InputBufferLength è minore di sizeof(MOUNTMGR_MOUNT_POINT), il campo Stato è impostato su STATUS_INVALID_PARAMETER.

Se InputBufferLength è minore della lunghezza totale delle tre stringhe ID di input, il campo Stato viene impostato su STATUS_INVALID_PARAMETER.

Se OutputBufferLength è minore di sizeof(MOUNTMGR_MOUNT_POINT), il campo Stato è impostato su STATUS_INVALID_PARAMETER.

Se OutputBufferLength è minore di sizeof(MOUNTMGR_MOUNT_POINTS) più la somma delle dimensioni del punto di montaggio triplica, il campo stato è impostato su STATUS_BUFFER_OVERFLOW.

Se una delle tre stringhe contenute all'interno di una delle tre triple è allineata su un indirizzo dispari (ad esempio, indirizzo & 01 != 0), il campo stato viene impostato su STATUS_INVALID_PARAMETER.

Osservazioni

Per altre informazioni, vedere Supporto delle richieste di Gestione montaggio in un driver di classe di archiviazione.

Fabbisogno

Requisito Valore
intestazione mountmgr.h (include Mountmgr.h)

Vedere anche

MOUNTMGR_MOUNT_POINTS