IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)
Questo IOCTL restituisce triple che sono costituite da un nome di collegamento simbolico persistente per il volume , ovvero un punto di montaggio, un ID univoco per il volume e un nome del dispositivo nonpersistente (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 trip 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 il triplo di input ha un collegamento simbolico, ma non specifica l'ID univoco o il nome del dispositivo, la richiesta restituisce solo un singolo triplo 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 il triplo di input è vuoto, la gestione montaggio restituisce l'intero elenco di dispositivi montati.
Il gestore di montaggio restituisce triple che corrispondono alla quantità di informazioni fornite dal chiamante. Se il chiamante invia l'ID univoco, la gestione montaggio restituisce tutte le triple con tale ID univoco. Se il chiamante immette il nome del percorso del volume o una lettera di unità come nome di collegamento simbolico, la gestione montaggio restituisce solo il triplo per il collegamento simbolico. Esiste una voce per collegamento simbolico. Se il chiamante immette un nome percorso del dispositivo, la gestione 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 di nuovo una sola voce per tale collegamento simbolico. Un chiamante eseguirà questa operazione per ottenere il nome percorso del dispositivo. Se il chiamante non inserisce alcun nome percorso del dispositivo, id univoco o collegamento simbolico, la gestione montaggio restituisce tutte le voci/triple.
Codice principale
Buffer di input
Il client di gestione montaggio inizializza la struttura di MOUNTMGR_MOUNT_POINT all'inizio del buffer in Irp-AssociatedIrp.SystemBuffer>. Immediatamente 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
La gestione montaggio inizializza una struttura a lunghezza variabile di tipo MOUNTMGR_MOUNT_POINTS all'inizio del buffer in Irp-AssociatedIrp.SystemBuffer>. Il gestore di montaggio inserisce i punti di montaggio, associati al volume indicato, all'indirizzo indicato dal membro MountPoints[] 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 dell'IRP indica le dimensioni, in byte, del buffer di output, che deve essere maggiore o uguale a sizeof(MOUNTMGR_MOUNT_POINTS)
.
Input/Buffer di output
N/D
Lunghezza del buffer di input/output
N/D
Blocco dello stato
Se l'operazione ha esito positivo, il campo Stato è impostato su STATUS_SUCCESS.
Se non si trova né l'ID univoco né il nome del dispositivo nonpersistent nell'elenco dei volumi montati del dispositivo, 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 è impostato su STATUS_INVALID_PARAMETER.
Se OutputBufferLength è minore di sizeof(MOUNTMGR_MOUNT_POINT)
, il campo Stato è impostato su STATUS_INVALID_PARAMETER.
Se OutputBufferLength è minore sizeof(MOUNTMGR_MOUNT_POINTS)
della 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 triple è allineata a un indirizzo dispari (ad esempio, indirizzo & 01 != 0), il campo Stato è impostato su STATUS_INVALID_PARAMETER.
Commenti
Per altre informazioni, vedere Supporto delle richieste di Mount Manager in un driver di classe di archiviazione.
Requisiti
Requisito | Valore |
---|---|
Intestazione | mountmgr.h (includere Mountmgr.h) |