Compartir a través de


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)