Compartir a través de


Crear una rutina de devolución de llamada de gabinete

Dado que la API de instalación no proporciona una rutina de devolución de llamada de gabinete predeterminada, debe proporcionar una rutina. La rutina de devolución de llamada que requiere la función SetupIterateCabinet debe tener el mismo formato que los señalados por FileCallback.

A continuación se muestra la sintaxis que usa SetupIterateCabinet para enviar una notificación a la rutina de devolución de llamada.

MsgHandler(          //the specified callback routine
    Context,         //context used by the callback routine
    Notification,    //cabinet notification
    Param1,          //additional notification information
    Param2           //additional notification information
);

El parámetro Context es un puntero void a una variable o estructura de contexto que la rutina de devolución de llamada puede usar para almacenar información que debe conservarse entre las llamadas posteriores a la rutina de devolución de llamada.

La rutina de devolución de llamada especifica la implementación de este contexto y setupIterateCabinet nunca hace referencia a ella ni la modifica.

El parámetro Notification es un entero sin signo y será uno de los valores siguientes.

Notification Descripción
SPFILENOTIFY_FILEEXTRACTED El archivo se ha extraído del gabinete.
SPFILENOTIFY_FILEINCABINET Se encuentra un archivo en el gabinete.
SPFILENOTIFY_NEEDNEWCABINET El archivo actual continúa en el siguiente gabinete.

 

Los dos parámetros finales, Param1 y Param2, también son enteros sin signo y contienen información adicional relevante para la notificación. Para obtener más información sobre las notificaciones enviadas por SetupIterateCabinet, vea Notificaciones de archivo de archivado.

Una rutina SP_FILE_NOTIFY_CALLBACK devuelve un entero sin signo. La rutina de devolución de llamada del gabinete debe devolver uno de los valores siguientes en función de la notificación.

Para la notificación de SPFILENOTIFY_FILEINCABINET, SetupIterateCabinet espera que la rutina de devolución de llamada devuelva uno de los siguientes valores.

Valor Significado
FILEOP_ABORT Anular el procesamiento del gabinete.
FILEOP_DOIT Extraiga el archivo actual.
FILEOP_SKIP Omita el archivo actual.

 

Para las notificaciones de SPFILENOTIFY_NEEDNEWCABINET y SPFILENOTIFY_FILEEXTRACTED, SetupIterateCabinet espera que la rutina de devolución de llamada devuelva uno de los siguientes valores.

Valor Significado
NO_ERROR No se encontró ningún error, continúe procesando el gabinete.
ERROR_XXX Error del tipo especificado. La función SetupIterateCabinet devolverá FALSE y una llamada a GetLastError devolverá el código de error especificado.

 

Si la rutina de devolución de llamada devuelve FILEOP_DOIT, la rutina también debe proporcionar una ruta de acceso de destino completa. Para obtener más información, consulte SPFILENOTIFY_FILEINCABINET.