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
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
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10, versione 1809 |
intestazione |
fltkernel.h |
Vedere anche
FltRequestFileInfoOnCreateCompletion
QUERY_ON_CREATE_EA_INFORMATION