Funzione FsRtlKernelFsControlFile (ntifs.h)

La funzione FsRtlKernelFsControlFile compila un FSCTL_XXX IRP esplicito, lo invia nello stack, attende in modo sincrono il completamento e restituisce il risultato. Questa funzione consente al chiamante di completare questa azione da FileObject anziché da handle.

Sintassi

NTSTATUS FsRtlKernelFsControlFile(
  [in]  PFILE_OBJECT FileObject,
  [in]  ULONG        FsControlCode,
  [in]  PVOID        InputBuffer,
  [in]  ULONG        InputBufferLength,
  [out] PVOID        OutputBuffer,
  [out] ULONG        OutputBufferLength,
  [out] PULONG       RetOutputBufferSize
);

Parametri

[in] FileObject

Puntatore al FILE_OBJECT per inviare l'operazione.

[in] FsControlCode

FSCTL_XXX codice che indica l'operazione di controllo del file system da eseguire. Il valore di questo parametro determina i formati e le lunghezze necessarie di InputBuffer e OutputBuffer, nonché quali delle coppie di parametri seguenti sono necessarie. Per informazioni dettagliate sui codici di FSCTL_XXX definiti dal sistema, vedere la sezione "Osservazioni" della voce di riferimento per DeviceIoControl nella documentazione Microsoft Windows SDK.

[in] InputBuffer

Puntatore a un buffer di input allocato dal chiamante che contiene informazioni specifiche del dispositivo da assegnare al driver di destinazione. Se FsControlCode specifica un'operazione che non richiede dati di input, questo puntatore è facoltativo e può essere NULL. Si noti che questo buffer potrebbe essere modificato al momento della restituzione e il chiamante deve adattarsi a questo. Ciò è dovuto al fatto che questo buffer può essere usato per contenere i dati di output.

[in] InputBufferLength

Lunghezza di InputBuffer in byte.

[out] OutputBuffer

Puntatore a un buffer di output allocato dal chiamante in cui le informazioni vengono restituite dal driver di destinazione. Se FsControlCode specifica un'operazione che non produce dati di output, questo puntatore è facoltativo e può essere NULL.

[out] OutputBufferLength

Lunghezza di OutputBuffer in byte.

[out] RetOutputBufferSize

Riceve il numero di byte effettivamente scritti (restituiti) nel buffer di output.

Valore restituito

FsRtlKernelFsControlFile restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato, ad esempio uno dei seguenti.

Valore Significato
STATUS_INSUFFICIENT_RESOURCES Si è verificato un errore di allocazione del pool.
STATUS_INVALID_PARAMETER È stato specificato un parametro non valido, ad esempio un FileObject non valido.

Commenti

FsRtlKernelFsControlFile imposta il codice IRP_MN_KERNEL_CALL secondario che consente di eseguire operazioni senza richiedere la gestione dei privilegi di volume per determinate operazioni.

Questa funzione presuppone che tutti i buffer passati siano buffer in modalità kernel.

Requisiti

Requisito Valore
Intestazione ntifs.h

Vedi anche

ZwFsControlFile