Compartir a través de


Macro FsRtlNotifyFullChangeDirectory (rxprocs.h)

El FsRtlNotifyFullChangeDirectory rutina crea una estructura de notificación para una solicitud de notificación y la agrega a la lista de notificaciones especificada.

Sintaxis

void FsRtlNotifyFullChangeDirectory(
  A1,
  A2,
  A3,
  A4,
  A5,
  A6,
  A7,
  A8,
  A9,
  A10
);

Parámetros

A1

Puntero a un objeto de sincronización opaco para la lista de notificaciones del volumen actual.

A2

Puntero al encabezado de una lista de notificaciones. Cada elemento de la lista es una estructura de notificación opaca.

A3

Puntero a un valor único asignado por el sistema de archivos para identificar la estructura de notificación que se va a crear como perteneciente a un objeto de archivo determinado. Si se proporciona una rutina de TraverseCallback, se pasa FsContext como parámetro NotifyContext a esa rutina.

A4

Puntero a una cadena ANSI o Unicode que contiene el nombre completo del directorio asociado a esta estructura de notificación. Se omite si NotifyIrp es NULL.

A5

Establézcalo en TRUE si también se deben observar todos los subdirectorios de este directorio. Establézcalo en FALSE si solo se va a ver el directorio. Se omite si NotifyIrp es NULL.

A6

Establézcalo en TRUE para omitir los búferes de usuario y forzar a que el directorio se vuelva a enumerar. Esta acción acelera la operación. Se omite si NotifyIrp es NULL.

A7

Máscara de bits de marcas que especifican los tipos de cambios en archivos o subdirectorios que deben hacer que se complete la cola de IRP de notificación pendientes. A continuación se describen los posibles valores de marca.

Bandera Significado

FILE_NOTIFY_CHANGE_FILE_NAME

Se ha agregado, eliminado o cambiado el nombre de un archivo en este directorio.

FILE_NOTIFY_CHANGE_DIR_NAME

Se ha creado, quitado o cambiado el nombre de un subdirectorio.

FILE_NOTIFY_CHANGE_NAME

El nombre de este directorio ha cambiado.

FILE_NOTIFY_CHANGE_ATTRIBUTES

El valor de un atributo de este archivo, como la hora de último acceso, ha cambiado.

FILE_NOTIFY_CHANGE_SIZE

El tamaño de este archivo ha cambiado.

FILE_NOTIFY_CHANGE_LAST_WRITE

La hora de última modificación de este archivo ha cambiado.

FILE_NOTIFY_CHANGE_LAST_ACCESS

La última hora de acceso de este archivo ha cambiado.

FILE_NOTIFY_CHANGE_CREATION

El tiempo de creación de este archivo ha cambiado.

FILE_NOTIFY_CHANGE_EA

Se han modificado los atributos extendidos de este archivo.

FILE_NOTIFY_CHANGE_SECURITY

La información de seguridad de este archivo ha cambiado.

FILE_NOTIFY_CHANGE_STREAM_NAME

Se ha agregado, eliminado o cambiado el nombre de una secuencia de archivos en este directorio.

FILE_NOTIFY_CHANGE_STREAM_SIZE

El tamaño de esta secuencia de archivos ha cambiado.

FILE_NOTIFY_CHANGE_STREAM_WRITE

Los datos de esta secuencia de archivos han cambiado.

 

completionFilter se omite si NotifyIrp es NULL.

A8

Puntero al IRP para completar el cambio de notificación. Si NotifyIrp es NULL, significa que se elimina la secuencia de archivos representada por este objeto de archivo.

A9

Puntero opcional a una rutina de devolución de llamada que se va a invocar cuando se produce un cambio en un subdirectorio que se está viendo en un árbol de directorios. Esto permite al sistema de archivos comprobar si el monitor ha recorrido el acceso a ese directorio. Esta rutina proporcionada por el autor de la llamada se declara de la siguiente manera:

NTSTATUS
(*PCHECK_FOR_TRAVERSE_ACCESS) (
    IN PVOID NotifyContext,                     // FsContext
    IN PVOID TargetContext,                     // Context pointer
    IN PSECURITY_SUBJECT_CONTEXT SubjectContext // SubjectContext
    );

Para obtener más información sobre el parámetro TargetContext, consulte el parámetro TargetContext de FsRtlNotifyFullReportChange. TraverseCallback se omite si NotifyIrp es NULL.

A10

Puntero a una estructura de contexto que se va a pasar a TraverseCallback. FsRtlNotifyFullChangeDirectory libera el contexto y libera la estructura después de usarla. Se omite si NotifyIrp es NULL. Si se proporciona una rutina de TraverseCallback, SubjectContext se pasa como parámetro SubjectContext a esa rutina.

Valor devuelto

Ninguno

Observaciones

se llama a FsRtlNotifyFullChangeDirectory un sistema de archivos que ha recibido una solicitud de cambio de notificación. Esta solicitud se recibe como IRP con código de función principal IRP_MJ_DIRECTORY_CONTROL, código de función secundaria IRP_MN_NOTIFY_CHANGE_DIRECTORY.

Si NotifyIrp es NULL, FsRtlNotifyFullChangeDirectory comprueba si la lista de notificaciones contiene un IRP pendiente que hace referencia a este objeto de archivo y, si es así, lo completa con STATUS_DELETE_PENDING.

Si NotifyIrp no es NULL, FsRtlNotifyFullChangeDirectory hace lo siguiente:

  • Comprueba si el objeto de archivo se ha realizado una limpieza. Si es así, FsRtlNotifyFullChangeDirectory completa el IRP de notificación con el estado STATUS_NOTIFY_CLEANUP.
  • Si el objeto de archivo no se ha realizado una limpieza, FsRtlNotifyFullChangeDirectory comprueba si la lista de notificaciones de este volumen ya contiene una estructura de notificación para este cambio. Si es así, FsRtlNotifyFullChangeDirectory completa los IRP pendientes. Si no es así, FsRtlNotifyFullChangeDirectory marca el IRP de notificación como pendiente, crea una estructura de notificación e la inserta en la lista.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de rxprocs.h (incluya Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

SECURITY_SUBJECT_CONTEXT