Condividi tramite


Funzione FltRetrieveFileInfoOnCreateCompletionEx (fltkernel.h)

FltRetrieveFileInfoOnCreateCompletionEx query per le informazioni sul file specificate al completamento della creazione del file.

Sintassi

NTSTATUS FLTAPI FltRetrieveFileInfoOnCreateCompletionEx(
  [in]  PFLT_FILTER        Filter,
  [in]  PFLT_CALLBACK_DATA Data,
  [in]  ULONG              InfoClass,
  [out] PULONG             RetInfoSize,
  [out] PVOID              *RetInfoBuffer
);

Parametri

[in] Filter

Puntatore di filtro opaco che identifica in modo univoco il driver minifiltro. Viene restituito da FltRegisterFiltere rimane costante finché il driver minifiltro viene caricato.

[in] Data

Puntatore ai dati di callback FLT_CALLBACK_DATA che rappresentano l'operazione di I/O.

[in] InfoClass

Flag che indica il tipo di informazioni sul file da restituire. Si noti che i flag non possono essere combinati. Può essere uno dei valori seguenti:

Bandiera Significato
QoCFileStatInformation (0x00000001) Il file system restituirà informazioni sullo stato dei file in una struttura QUERY_ON_CREATE_FILE_STAT_INFORMATION.
QoCFileLxInformation (0x00000002) Il file system restituirà informazioni simili a Linux estese in una struttura QUERY_ON_CREATE_FILE_LX_INFORMATION.
QoCFileEaInformation (0x00000004) Il file system restituirà gli attributi estesi (EA) in una struttura QUERY_ON_CREATE_EA_INFORMATION.
QoCFileUsnInformation (0x00000008) Il file system restituirà le informazioni USN in una struttura QUERY_ON_CREATE_USN_INFORMATION.
QoCFileSecurityInformation (0x00000010) Il file system restituirà le informazioni di sicurezza dei file in una struttura QUERY_ON_CREATE_SECURITY_INFORMATION.

[out] RetInfoSize

Puntatore a un ULONG che riceve le dimensioni, in byte, del buffer a cui RetInfoBuffer punta.

[out] RetInfoBuffer

Riceve un puntatore alla struttura di InfoClass richiesta . Se il file system è in grado di elaborare la richiesta ma non riesce a trovare le informazioni sul file richieste, questo parametro è impostato su NULL.

Valore restituito

Codice restituito Descrizione
STATUS_SUCCESS Il file system ha restituito correttamente le informazioni sul file richieste.
STATUS_NOT_FOUND Il file system ha elaborato la richiesta, ma le informazioni richieste non erano presenti nel file o il file system non riconosce la richiesta di informazioni in InfoClass. Il chiamante non deve usare le API tradizionali del file system per richiedere le informazioni.
STATUS_NOT_SUPPORTED Il file system non è riuscito a recuperare le informazioni richieste. Questo errore si verifica quando il file system non supporta la richiesta di informazioni o LCP associato o perché FltRequestFileInfoOnCreateCompletion non è stato chiamato durante la pre-creazione del file. Il chiamante deve invece usare le API tradizionali del file system per riprovare a richiedere le informazioni.
STATUS_UNSUCCESSFUL Il file system ha ricevuto un errore durante il tentativo di recuperare le informazioni richieste. Il chiamante può provare a richiedere le informazioni tramite le normali API del file system, ma ciò probabilmente avrà esito negativo.

Osservazioni

FltRequestFileInfoOnCreateCompletion e FltRetrieveFileInfoOnCreateCompletionEx consentire a un minifiltro di ottenere informazioni su un file durante la creazione di file, evitando così il costo delle prestazioni di una query successiva che richiederebbe un attraversamento dello stack.

  • In pre-creazione, il minifiltro effettua una chiamata a FltRequestFileInfoOnCreateCompletion con una combinazione di input InfoClassFlags che identificano le informazioni richieste.
  • Il file system alloca le strutture appropriate e inserisce le informazioni richieste, se supportate, mentre elabora la creazione.
  • In post-creazione, il minifiltro chiama FltRetrieveFileInfoOnCreateCompletionEx per ottenere le informazioni richieste nella chiamata di pre-creazione. Se il minifiltro ha richiesto più di un tipo di informazioni, deve chiamare FltRetrieveFileInfoOnCreateCompletionEx una volta per ogni tipo di informazioni. Per esempio:

// Pre-create:
NTSTATUS status;
status = FltRequestFileInfoOnCreateCompletion( Filter,
                                               CallbackData,
                                               QoCFileStatInformation
                                                | QoCFileLxInformation
                                                | QoCFileEaInformation 
                                                | QoCFileUsnInformation );

// Post-create:
NTSTATUS status;
ULONG fileStatSize, fileLxSize, fileEaSize;
QUERY_ON_CREATE_FILE_STAT_INFORMATION* fileStatInfo;
QUERY_ON_CREATE_FILE_LX_INFORMATION* fileLxInfo;
QUERY_ON_CREATE_EA_INFORMATION* fileEaInfo;
QUERY_ON_CREATE_USN_INFORMATION* fileUsnInfo;
QUERY_ON_CREATE_SECURITY_INFORMATION* fileSecurityInfo;

status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileStatInformation,
                                                  &fileStatSize,
                                                  &fileStatInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileLxInformation,
                                                  &fileLxSize,
                                                  &fileLxInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileEaInformation, 
                                                  &fileEaSize, 
                                                  &fileEaInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileUsnInformation, 
                                                  &fileUsnInfo, 
                                                  &fileUsnInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
                                                  CallbackData,
                                                  QoCFileSecurityInformation,
                                                  &fileSecurityInfo,
                                                  &fileSecurityInfo);

Una volta restituito FltRetrieveFileInfoOnCreateCompletionEx, un minifiltro può scrivere nel buffer a cui punta RetInfoBuffer. Eventuali filtri sopra il minifiltro visualizzeranno le modifiche se chiamano FltRetrieveFileInfoOnCreateCompletionEx sul tipo di informazioni modificato.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 1809
intestazione fltkernel.h

Vedere anche

ECP_LIST

FLT_CALLBACK_DATA

FltRequestFileInfoOnCreateCompletion

QUERY_ON_CREATE_EA_INFORMATION

QUERY_ON_CREATE_FILE_STAT_INFORMATION

QUERY_ON_CREATE_FILE_LX_INFORMATION