Compartir a través de


Función SHChangeNotifyRegister (shlobj_core.h)

Registra una ventana para recibir notificaciones del sistema de archivos o shell, si el sistema de archivos admite notificaciones.

Sintaxis

ULONG SHChangeNotifyRegister(
  [in] HWND                      hwnd,
       int                       fSources,
       LONG                      fEvents,
       UINT                      wMsg,
       int                       cEntries,
  [in] const SHChangeNotifyEntry *pshcne
);

Parámetros

[in] hwnd

Tipo: HWND

Identificador de la ventana que recibe los mensajes de cambio o notificación.

fSources

Tipo: int

Uno o varios de los valores siguientes que indican el tipo de eventos para los que se van a recibir notificaciones.

Nota En versiones anteriores del SDK, estas marcas no se definen en un archivo de encabezado y los implementadores deben definir estos valores por sí mismos o usar sus valores numéricos directamente. A partir de Windows Vista, estas marcas se definen en Shlobj.h.
 

SHCNRF_InterruptLevel (0x0001)

Notificaciones de nivel de interrupción del sistema de archivos.

SHCNRF_ShellLevel (0x0002)

Notificaciones de nivel de shell del shell.

SHCNRF_RecursiveInterrupt (0x1000)

Interrumpir eventos en todo el subárbol. Esta marca debe combinarse con la marca SHCNRF_InterruptLevel . Al usar esta marca, también se deben realizar notificaciones recursivas estableciendo el miembro fRecursive de la estructura SHChangeNotifyEntry correspondiente a la que hace referencia pshcne en TRUE. El uso de SHCNRF_RecursiveInterrupt en una vista de nivel único (por ejemplo, un PIDL relativo y que solo contiene un SHITEMID) bloqueará la notificación de eventos en el nivel más alto y, por tanto, evitará una actualización secundaria recursiva. Por lo tanto, un icono arrastrado al nivel más bajo de una jerarquía de carpetas puede no aparecer en la vista según lo previsto.

SHCNRF_NewDelivery (0x8000)

Los mensajes recibidos usan memoria compartida. Llame a SHChangeNotification_Lock para acceder a los datos reales. Llame a SHChangeNotification_Unlock para liberar la memoria cuando haya terminado.

Nota Se recomienda esta marca porque proporciona un método de entrega más sólido. Todos los clientes deben especificar esta marca.
 

fEvents

Tipo: LONG

Cambiar los eventos de notificación para los que se va a recibir la notificación. Consulte las marcas de SHCNE enumeradas en SHChangeNotify para conocer los valores posibles.

wMsg

Tipo: UINT

Mensaje que se va a publicar en el procedimiento de ventana.

cEntries

Tipo: int

Número de entradas en la matriz pshcne .

[in] pshcne

Tipo: const SHChangeNotifyEntry*

Matriz de estructuras SHChangeNotifyEntry que contienen las notificaciones. Esta matriz siempre debe establecerse en una al llamar a SHChangeNotifyRegister o SHChangeNotifyDeregister no funcionará correctamente.

Valor devuelto

Tipo: ULONG

Devuelve un identificador de registro entero positivo. Devuelve 0 si no hay memoria o en respuesta a parámetros no válidos.

Comentarios

Consulta el ejemplo Change Notify Watcher en el Kit de desarrollo de software (SDK) de Windows para ver un ejemplo completo que muestra el uso de esta función.

Cuando se genera un evento de notificación de cambio, el mensaje indicado por wMsg se entrega a la ventana especificada por el parámetro hwnd .

  • Si se especifica SHCNRF_NewDelivery, los valores wParam y lParam del mensaje deben pasarse a SHChangeNotification_Lock como parámetros hChange y dwProcID respectivamente.
  • Si no se especifica SHCNRF_NewDelivery, wParam es un puntero a dos punteros PIDLIST_ABSOLUTE y lParam especifica el evento. Los dos punteros PIDLIST_ABSOLUTE pueden ser NULL, en función del evento que se envíe.
Cuando se produce un evento de sistema de archivos relevante y el parámetro hwnd no es NULL, el mensaje indicado por wMsg se publica en la ventana especificada. De lo contrario, si el parámetro pshcne no es NULL, se usa esa entrada de notificación.

Por motivos de rendimiento, se pueden combinar varias notificaciones en una sola notificación. Por ejemplo, si se genera un gran número de notificaciones de SHCNE_UPDATEITEM para los archivos de la misma carpeta, se pueden unir a una sola notificación de SHCNE_UPDATEDIR .

La función NTSHChangeNotifyRegister , que ya no está disponible a partir de Windows Vista, era equivalente a SHChangeNotifyRegister con la marca SHCNRF_NewDelivery.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shlobj_core.h (incluya Shlobj.h)
Library Shell32.lib
Archivo DLL Shell32.dll (versión 5.0 o posterior)
Conjunto de API ext-ms-win-shell-shell32-l1-2-1 (introducido en Windows 10, versión 10.0.10240)