Compartir a través de


CGlobalModule::OnGlobalApplicationResolveModules (Método)

Representa el método que controlará un GlobalApplicationResolveModules evento, que se produce cuando IIS resuelve los módulos registrados.

Sintaxis

virtual GLOBAL_NOTIFICATION_STATUS OnGlobalApplicationResolveModules(  
   IN IHttpApplicationResolveModulesProvider* pProvider  
);  

Parámetros

pProvider
[IN] Puntero a una interfaz IHttpApplicationResolveModulesProvider .

Valor devuelto

Valor de GLOBAL_NOTIFICATION_STATUS .

Observaciones

Cuando se haya registrado un módulo global para la notificación de eventos de GL_APPLICATION_RESOLVE_MODULES , IIS llamará al método del OnGlobalApplicationResolveModules módulo cuando IIS resuelva los módulos de una aplicación.

Nota:

Los módulos globales se pueden registrar para la GlobalApplicationResolveModules notificación de eventos registrando para GL_APPLICATION_RESOLVE_MODULES 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_RESOLVE_MODULES notificación. Cuando IIS resuelve los módulos de una aplicación, IIS llamará al método del módulo de OnGlobalApplicationResolveModules 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_RESOLVE_MODULES notification.
    GLOBAL_NOTIFICATION_STATUS
    OnGlobalApplicationResolveModules(
        IN IHttpApplicationResolveModulesProvider * pProvider
    )
    {
        UNREFERENCED_PARAMETER( pProvider );
        WriteEventViewerLog("OnGlobalApplicationResolveModules");
        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_RESOLVE_MODULES );
}

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
Cliente - IIS 7.0 en Windows Vista
- IIS 7.5 en Windows 7
- IIS 8.0 en Windows 8
- IIS 10.0 en Windows 10
Server - 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)