CGlobalModule::OnGlobalApplicationStop (Método)
Representa el método que controlará un GlobalApplicationStop
evento, que se produce cuando IIS cierra una aplicación.
Sintaxis
virtual GLOBAL_NOTIFICATION_STATUS OnGlobalApplicationStop(
IN IHttpApplicationStopProvider* pProvider
);
Parámetros
pProvider
[IN] Puntero a una interfaz IHttpApplicationStopProvider .
Nota
La IHttpApplicationStopProvider
interfaz es una definición de tipo de una interfaz IHttpApplicationProvider .
Valor devuelto
Valor de GLOBAL_NOTIFICATION_STATUS .
Comentarios
Cuando se haya registrado un módulo global para la notificación de eventos de GL_APPLICATION_STOP , IIS llamará al método del OnGlobalApplicationStop
módulo cuando IIS cierre una aplicación.
Nota
Los módulos globales se pueden registrar para la GlobalApplicationStop
notificación de eventos registrando para GL_APPLICATION_STOP
en la función RegisterModule del módulo.
Ejemplo
En el ejemplo de código siguiente se muestra cómo crear un módulo HTTP de nivel global que se registra para la GL_APPLICATION_STOP
notificación. Cuando IIS cierre una aplicación, llamará al método del módulo de OnGlobalApplicationStop
ejemplo. Este método escribirá una entrada en el registro de la aplicación del Visor de eventos de Windows y, a continuación, se cerrará.
#define _WINSOCKAPI_
#include <windows.h>
#include <sal.h>
#include <httpserv.h>
// Create the module's global class.
class MyGlobalModule : public CGlobalModule
{
public:
// Process a GL_APPLICATION_STOP notification.
GLOBAL_NOTIFICATION_STATUS
OnGlobalApplicationStop(
IN IHttpApplicationStopProvider * pProvider
)
{
UNREFERENCED_PARAMETER( pProvider );
WriteEventViewerLog("OnGlobalApplicationStop");
return GL_NOTIFICATION_CONTINUE;
}
VOID Terminate()
{
// Remove the class from memory.
delete this;
}
MyGlobalModule()
{
// Open a handle to the Event Viewer.
m_hEventLog = RegisterEventSource( NULL,"IISADMIN" );
}
~MyGlobalModule()
{
// Test whether the handle for the Event Viewer is open.
if (NULL != m_hEventLog)
{
// Close the handle to the Event Viewer.
DeregisterEventSource( m_hEventLog );
m_hEventLog = NULL;
}
}
private:
// Create a handle for the event viewer.
HANDLE m_hEventLog;
// Define a method that writes to the Event Viewer.
BOOL WriteEventViewerLog(LPCSTR szNotification)
{
// Test whether the handle for the Event Viewer is open.
if (NULL != m_hEventLog)
{
// Write any strings to the Event Viewer and return.
return ReportEvent(
m_hEventLog,
EVENTLOG_INFORMATION_TYPE, 0, 0,
NULL, 1, 0, &szNotification, NULL );
}
return FALSE;
}
};
// Create the module's exported registration function.
HRESULT
__stdcall
RegisterModule(
DWORD dwServerVersion,
IHttpModuleRegistrationInfo * pModuleInfo,
IHttpServer * pGlobalInfo
)
{
UNREFERENCED_PARAMETER( dwServerVersion );
UNREFERENCED_PARAMETER( pGlobalInfo );
// Create an instance of the global module class.
MyGlobalModule * pGlobalModule = new MyGlobalModule;
// Test for an error.
if (NULL == pGlobalModule)
{
return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
}
// Set the global notifications and exit.
return pModuleInfo->SetGlobalNotifications(
pGlobalModule, GL_APPLICATION_STOP );
}
El módulo debe exportar la función RegisterModule . Puede exportar esta función mediante la creación de un archivo de definición de módulo (.def) para el proyecto, o bien puede compilar el módulo mediante el /EXPORT:RegisterModule
modificador . Para obtener más información, vea Tutorial: Creación de un módulo HTTP de Global-Level mediante código nativo.
Opcionalmente, puede compilar el código mediante la __stdcall (/Gz)
convención de llamada en lugar de declarar explícitamente la convención de llamada para cada función.
Requisitos
Tipo | Descripción |
---|---|
Remoto | - IIS 7.0 en Windows Vista - IIS 7.5 en Windows 7 - IIS 8.0 en Windows 8 - IIS 10.0 en Windows 10 |
Servidor | - IIS 7.0 en Windows Server 2008 - IIS 7.5 en Windows Server 2008 R2 - IIS 8.0 en Windows Server 2012 - IIS 8.5 en Windows Server 2012 R2 - IIS 10.0 en Windows Server 2016 |
Producto | - IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0 - IIS Express 7.5, IIS Express 8.0, IIS Express 10.0 |
Encabezado | Httpserv.h |
Consulte también
CGlobalModule (clase)
CGlobalModule::OnGlobalApplicationStart (Método)