Freigeben über


CGlobalModule-Klasse

Definiert die Basisklasse für HTTP-Module auf globaler Ebene.

Syntax

class CGlobalModule  

Methodik

In der folgenden Tabelle sind die Methoden aufgeführt, die von der CGlobalModule Klasse verfügbar gemacht werden.

Name Beschreibung
OnGlobalApplicationPreload Stellt eine Schnittstelle auf globaler Ebene zum Vorabladen einer Anwendung in den Serverspeicher bereit.
OnGlobalApplicationResolveModules Stellt die Methode dar, die ein GlobalApplicationResolveModules Ereignis behandelt, das auftritt, wenn IIS die registrierten Module aufgelöst.
OnGlobalApplicationStart Stellt die Methode dar, die ein GlobalApplicationStart Ereignis behandelt, das auftritt, wenn IIS eine Anwendung startet.
OnGlobalApplicationStop Stellt die Methode dar, die ein GlobalApplicationStop Ereignis behandelt, das auftritt, wenn IIS eine Anwendung heruntergefahren.
OnGlobalCacheCleanup Stellt die Methode dar, die ein GlobalCacheCleanup Ereignis behandelt.
OnGlobalCacheOperation Stellt die Methode dar, die ein GlobalCacheOperation Ereignis behandelt, das auftritt, wenn IIS einen cachebezogenen Vorgang ausführt.
OnGlobalConfigurationChange Stellt die Methode dar, die ein GlobalConfigurationChange Ereignis behandelt, das auftritt, wenn eine Änderung an einer Konfigurationsdatei vorgenommen wird.
OnGlobalCustomNotification Stellt die Methode dar, die ein GlobalCustomNotification Ereignis behandelt, das auftritt, wenn ein Modul eine benutzerdefinierte Benachrichtigung auslöst.
OnGlobalFileChange Stellt die Methode dar, die ein GlobalFileChange Ereignis behandelt, das auftritt, wenn eine Datei innerhalb einer Website geändert wird.
OnGlobalHealthCheck Stellt die Methode dar, die ein GlobalHealthCheck Ereignis behandelt, das auftritt, wenn ein integritätsbezogener Vorgang ausgeführt wird.
OnGlobalPreBeginRequest Stellt die Methode dar, die ein GlobalPreBeginRequest Ereignis behandelt, das vor der Eingabe einer Anforderung in die Pipeline auftritt.
OnGlobalRSCAQuery Stellt die Methode dar, die ein GlobalRSCAQuery Ereignis behandelt, das auftritt, wenn eine Run-Time Status- und Steuerelementabfrage ausgeführt wird.
OnGlobalStopListening Stellt die Methode dar, die ein GlobalStopListening Ereignis behandelt, das auftritt, wenn IIS keine neuen Anforderungen mehr akzeptiert.
OnGlobalThreadCleanup Stellt die Methode dar, die ein GlobalThreadCleanup Ereignis behandelt, das auftritt, wenn IIS einen Thread an den Threadpool zurückgibt.
OnGlobalTraceEvent Stellt die Methode dar, die ein GlobalTraceEvent Ereignis behandelt, das auftritt, wenn ein Ablaufverfolgungsereignis ausgelöst wird.
Terminate Stellt die Methode dar, die IIS aufruft, wenn ein globales Modul die Verarbeitung abgeschlossen hat.

Abgeleitete Klassen

Diese Klasse enthält keine abgeleiteten Klassen.

Bemerkungen

Die CGlobalModule Klasse ist die Basisklasse für HTTP-Module auf globaler Ebene. HTTP-Module auf globaler Ebene müssen eine Klasse enthalten, von CGlobalModuleder geerbt wird. CGlobalModule definiert die Methoden, die IIS 7 aufruft, um Benachrichtigungen auf globaler Ebene zu behandeln, wenn Ereignisse auf globaler Ebene auftreten. Ein HTTP-Modul kann sich für bestimmte Ereignisse registrieren, indem eine Liste von Benachrichtigungen in der exportierten RegisterModule-Funktion eines Moduls definiert wird. Wenn ein Modul auf globaler Ebene die Verarbeitung abgeschlossen hat, sollte das Modul die CGlobalModule::Terminate-Methode verwenden, um Instanzen aus dem Arbeitsspeicher zu entfernen CGlobalModule .

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie sie ein einfaches HTTP-Modul auf globaler Ebene "Hallo Welt" erstellen. Das Modul definiert eine exportierte RegisterModule-Funktion , die eine Instanz einer Klasse erstellt, von der abgeleitet CGlobalModulewird. Wenn die Klasse nicht erstellt werden kann, wird die Funktion mit einem Fehlercode beendet. andernfalls ruft die Funktion die IHttpModuleRegistrationInfo::SetRequestNotifications-Methode auf, um sich für die GL_PRE_BEGIN_REQUEST-Benachrichtigung zu registrieren.

Wenn eine GL_PRE_BEGIN_REQUEST Benachrichtigung auftritt, ruft IIS die CGlobalModule::OnGlobalPreBeginRequest-Methode des Moduls auf, um die Benachrichtigung zu verarbeiten. Die Methode ruft eine private Methode auf, um ein Ereignis in das Anwendungsprotokoll der Ereignisanzeige zu schreiben, und gibt dann GL_NOTIFICATION_CONTINUE zurück, um IIS zu benachrichtigen, um die Verarbeitung anderer Benachrichtigungen fortzusetzen. Wenn die Verarbeitung abgeschlossen ist, ruft IIS die CGlobalModule::Terminate-Methode des Moduls auf, um die Klasse aus dem Arbeitsspeicher zu entfernen.

#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 );
}

Ihr Modul muss die RegisterModule-Funktion exportieren. Sie können diese Funktion exportieren, indem Sie eine Moduldefinitionsdatei (.def) für Ihr Projekt erstellen oder das Modul mithilfe der /EXPORT:RegisterModule Option kompilieren. Weitere Informationen finden Sie unter Walkthrough: Creating a Global-Level HTTP Module By Using Native Code.

Sie können den Code optional kompilieren, indem Sie die __stdcall (/Gz) Aufrufenkonvention verwenden, anstatt die aufrufende Konvention für jede Funktion explizit zu deklarieren.

Anforderungen

Typ Beschreibung
Kunde - IIS 7.0 auf Windows Vista
- IIS 7.5 unter Windows 7
- IIS 8.0 auf Windows 8
- IIS 10.0 auf Windows 10
Server - IIS 7.0 auf Windows Server 2008
- IIS 7.5 auf Windows Server 2008 R2
- IIS 8.0 auf Windows Server 2012
- IIS 8.5 unter Windows Server 2012 R2
- IIS 10.0 auf Windows Server 2016
Produkt - 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
Header Httpserv.h

Siehe auch

Web Server Core-Klassen
Erstellen von Native-Code-HTTP-Modulen
CHttpModule-Klasse