Compartir a través de


Función FltRetrieveFileInfoOnCreateCompletionEx (fltkernel.h)

FltRetrieveFileInfoOnCreateCompletionEx consulta la información de archivo especificada tras la finalización de la creación de archivos.

Sintaxis

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

Parámetros

[in] Filter

Puntero de filtro opaco que identifica de forma única el controlador de minifiltro. Lo devuelve FltRegisterFilter y permanece constante siempre que se cargue el controlador de minifiltro.

[in] Data

Puntero al FLT_CALLBACK_DATA datos de devolución de llamada que representan la operación de E/S.

[in] InfoClass

Marca que indica el tipo de información de archivo que se va a devolver. Tenga en cuenta que las marcas no se pueden combinar. Puede ser uno de los siguientes valores:

Marca Significado
QoCFileStatInformation (0x00000001) El sistema de archivos devolverá información de estadísticas de archivos en una estructura de QUERY_ON_CREATE_FILE_STAT_INFORMATION .
QoCFileLxInformation (0x00000002) El sistema de archivos devolverá información extendida similar a Linux en una estructura QUERY_ON_CREATE_FILE_LX_INFORMATION .
QoCFileEaInformation (0x00000004) El sistema de archivos devolverá atributos extendidos (EA) en una estructura de QUERY_ON_CREATE_EA_INFORMATION .
QoCFileUsnInformation (0x00000008) El sistema de archivos devolverá información de USN en una estructura de QUERY_ON_CREATE_USN_INFORMATION .
QoCFileSecurityInformation (0x00000010) El sistema de archivos devolverá información de seguridad de archivos en una estructura de QUERY_ON_CREATE_SECURITY_INFORMATION .

[out] RetInfoSize

Puntero a un ULONG que recibe el tamaño, en bytes, del búfer al que apunta RetInfoBuffer .

[out] RetInfoBuffer

Recibe un puntero a la estructura InfoClass solicitada. Si el sistema de archivos puede procesar la solicitud pero no encuentra la información de archivo solicitada, este parámetro se establece en NULL.

Valor devuelto

Código devuelto Descripción
STATUS_SUCCESS El sistema de archivos devolvió correctamente la información de archivo solicitada.
STATUS_NOT_FOUND El sistema de archivos procesó la solicitud, pero la información solicitada no estaba presente en el archivo, o el sistema de archivos no reconoce la solicitud de información en InfoClass. El autor de la llamada no debe usar las API tradicionales del sistema de archivos para solicitar la información.
STATUS_NOT_SUPPORTED El sistema de archivos no pudo recuperar la información solicitada. Este error se produce cuando el sistema de archivos no admite la solicitud de información o ECP asociado, o porque no se llamó a FltRequestFileInfoOnCreateCompletion durante la creación previa del archivo. En su lugar, el autor de la llamada debe usar las API tradicionales del sistema de archivos para reintentar la solicitud de la información.
STATUS_UNSUCCESSFUL El sistema de archivos recibió un error al intentar recuperar la información solicitada. El autor de la llamada puede intentar solicitar la información por medio de las API normales del sistema de archivos, pero es probable que se produzca un error.

Comentarios

FltRequestFileInfoOnCreateCompletion y FltRetrieveFileInfoOnCreateCompletionEx permiten que un minifiltro obtenga información sobre un archivo durante la creación de archivos, lo que evita el costo de rendimiento de una consulta posterior que requeriría un recorrido de pila.

  • En la creación previa, el minifiltro realiza una llamada a FltRequestFileInfoOnCreateCompletion con una combinación de InfoClassFlags de entrada que identifican la información solicitada.
  • El sistema de archivos asigna las estructuras adecuadas y rellena la información solicitada, si se admite, mientras procesa la creación.
  • En posterior a la creación, el minifiltro llama a FltRetrieveFileInfoOnCreateCompletionEx para obtener la información solicitada en la llamada previa a la creación. Si el minifiltro solicitó más de un tipo de información, debe llamar a FltRetrieveFileInfoOnCreateCompletionEx una vez para cada tipo de información. Por ejemplo:

// 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 vez que fltRetrieveFileInfoOnCreateCompletionEx devuelve, un minifiltro puede escribir en el búfer al que Apunta RetInfoBuffer . Los filtros anteriores a ese minifiltro verán los cambios si llaman a FltRetrieveFileInfoOnCreateCompletionEx en el tipo de información modificado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1809
Encabezado fltkernel.h

Consulte también

ECP_LIST

FLT_CALLBACK_DATA

FltRequestFileInfoOnCreateCompletion

QUERY_ON_CREATE_EA_INFORMATION

QUERY_ON_CREATE_FILE_STAT_INFORMATION

QUERY_ON_CREATE_FILE_LX_INFORMATION