Condividi tramite


Classe CGlobalModule

Definisce la classe di base per i moduli HTTP a livello globale.

Sintassi

class CGlobalModule  

Metodi

Nella tabella seguente sono elencati i metodi esposti dalla CGlobalModule classe .

Nome Descrizione
OnGlobalApplicationPreload deddc775-1ab0-492c-bda0-b32be5d4f4cc
OnGlobalApplicationResolveModules Rappresenta il metodo che gestirà un GlobalApplicationResolveModules evento, che si verifica quando IIS risolve i moduli registrati.
OnGlobalApplicationStart Rappresenta il metodo che gestirà un GlobalApplicationStart evento, che si verifica quando IIS avvia un'applicazione.
OnGlobalApplicationStop Rappresenta il metodo che gestirà un GlobalApplicationStop evento, che si verifica quando IIS arresta un'applicazione.
OnGlobalCacheCleanup Rappresenta il metodo che gestirà un evento GlobalCacheCleanup.
OnGlobalCacheOperation Rappresenta il metodo che gestirà un GlobalCacheOperation evento, che si verifica quando IIS esegue un'operazione correlata alla cache.
OnGlobalConfigurationChange Rappresenta il metodo che gestirà un GlobalConfigurationChange evento, che si verifica quando viene apportata una modifica a un file di configurazione.
OnGlobalCustomNotification Rappresenta il metodo che gestirà un GlobalCustomNotification evento, che si verifica quando un modulo genera una notifica definita dall'utente.
OnGlobalFileChange Rappresenta il metodo che gestirà un GlobalFileChange evento, che si verifica quando viene modificato un file all'interno di un sito Web.
OnGlobalHealthCheck Rappresenta il metodo che gestirà un GlobalHealthCheck evento, che si verifica quando viene eseguita un'operazione correlata all'integrità.
OnGlobalPreBeginRequest Rappresenta il metodo che gestirà un GlobalPreBeginRequest evento, che si verifica prima che una richiesta entri nella pipeline.
OnGlobalRSCAQuery Rappresenta il metodo che gestirà un GlobalRSCAQuery evento, che si verifica quando viene eseguita una query di Run-Time Status e Control.
OnGlobalStopListening Rappresenta il metodo che gestirà un GlobalStopListening evento, che si verifica quando IIS smette di accettare nuove richieste.
OnGlobalThreadCleanup Rappresenta il metodo che gestirà un GlobalThreadCleanup evento, che si verifica quando IIS restituisce un thread al pool di thread.
OnGlobalTraceEvent Rappresenta il metodo che gestirà un GlobalTraceEvent evento, che si verifica quando viene generato un evento di traccia.
Terminate. Rappresenta il metodo che IIS chiama quando un modulo globale ha completato l'elaborazione.

Classi derivate

Questa classe non contiene classi derivate.

Commenti

La CGlobalModule classe è la classe base per i moduli HTTP a livello globale. I moduli HTTP a livello globale devono contenere una classe che eredita da CGlobalModule. CGlobalModule definisce i metodi chiamati da IIS 7 per gestire le notifiche a livello globale quando si verificano eventi a livello globale. Un modulo HTTP può eseguire la registrazione per eventi specifici definendo un elenco di notifiche nella funzione RegisterModule esportata di un modulo. Al termine dell'elaborazione di un modulo a livello globale, il modulo deve usare il metodo CGlobalModule::Terminate per rimuovere CGlobalModule le istanze dalla memoria.

Esempio

Nell'esempio di codice seguente viene illustrato come creare un semplice modulo HTTP a livello globale "Hello World". Il modulo definisce una funzione RegisterModule esportata che crea un'istanza di una classe derivata da CGlobalModule. Se la classe non può essere creata, la funzione viene chiusa con un codice di errore; in caso contrario, la funzione chiama il metodo IHttpModuleRegistrationInfo::SetRequestNotifications per eseguire la registrazione per la notifica di GL_PRE_BEGIN_REQUEST .

Quando si verifica una GL_PRE_BEGIN_REQUEST notifica, IIS chiama il metodo CGlobalModule::OnGlobalPreBeginRequest del modulo per elaborare la notifica. Il metodo chiama un metodo privato per scrivere un evento nel registro applicazioni del Visualizzatore eventi e quindi restituisce GL_NOTIFICATION_CONTINUE per notificare a IIS di continuare l'elaborazione di altre notifiche. Al termine dell'elaborazione, IIS chiama il metodo CGlobalModule::Terminate del modulo per rimuovere la classe dalla memoria.

#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_START notification.
    GLOBAL_NOTIFICATION_STATUS
    OnGlobalPreBeginRequest(
        IN IPreBeginRequestProvider * pProvider
    )
    {
        UNREFERENCED_PARAMETER( pProvider );
        WriteEventViewerLog( "Hello World!" );
        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_PRE_BEGIN_REQUEST );
}

Il modulo deve esportare la funzione RegisterModule . È possibile esportare questa funzione creando un file di definizione del modulo (con estensione def) per il progetto oppure è possibile compilare il modulo usando l'opzione /EXPORT:RegisterModule . Per altre informazioni, vedere Procedura dettagliata: Creazione di un modulo HTTP Global-Level tramite codice nativo.

Facoltativamente, è possibile compilare il codice usando la __stdcall (/Gz) convenzione di chiamata anziché dichiarare in modo esplicito la convenzione di chiamata per ogni funzione.

Requisiti

Tipo Descrizione
Client - IIS 7.0 in Windows Vista
- IIS 7.5 in Windows 7
- IIS 8.0 in Windows 8
- IIS 10.0 in Windows 10
Server - IIS 7.0 in Windows Server 2008
- IIS 7.5 in Windows Server 2008 R2
- IIS 8.0 in Windows Server 2012
- IIS 8.5 in Windows Server 2012 R2
- IIS 10.0 in Windows Server 2016
Prodotto - 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
Intestazione Httpserv.h

Vedere anche

Classi Web Server Core
Creazione di moduli HTTP Native-Code
Classe CHttpModule