Freigeben über


CGlobalModule-Klasse

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

Syntax

class CGlobalModule  

Methoden

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

Name BESCHREIBUNG
OnGlobalApplicationPreload deddc775-1ab0-492c-bda0-b32be5d4f4cc
OnGlobalApplicationResolveModules Stellt die Methode dar, die ein GlobalApplicationResolveModules Ereignis behandelt, das auftritt, wenn IIS die registrierten Module auflö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 herunterfährt.
OnGlobalCacheCleanup Stellt die Methode zur Behandlung eines GlobalCacheCleanup-Ereignisses dar.
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 auftritt, bevor eine Anforderung in die Pipeline eintritt.
OnGlobalRSCAQuery Stellt die Methode dar, die ein GlobalRSCAQuery Ereignis behandelt, das auftritt, wenn eine Run-Time Status- und Control-Abfrage 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, die von CGlobalModuleerbt. CGlobalModule definiert die Methoden, die IIS 7 aufruft, um Benachrichtigungen auf globaler Ebene zu verarbeiten, 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 auf "Hallo Welt" erstellen. Das Modul definiert eine exportierte RegisterModule-Funktion, die eine instance einer Klasse erstellt, die von CGlobalModuleabgeleitet wird. 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 des Ereignisanzeige zu schreiben, und gibt dann GL_NOTIFICATION_CONTINUE zurück, um IIS zu benachrichtigen, 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 Sie können das Modul mithilfe des Schalters /EXPORT:RegisterModule kompilieren. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines Global-Level HTTP-Moduls mithilfe von nativem Code.

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

Anforderungen

type BESCHREIBUNG
Client – IIS 7.0 unter Windows Vista
– IIS 7.5 unter Windows 7
– IIS 8.0 unter Windows 8
– IIS 10.0 unter Windows 10
Server – IIS 7.0 unter Windows Server 2008
– IIS 7.5 unter Windows Server 2008 R2
– IIS 8.0 unter Windows Server 2012
– IIS 8.5 unter Windows Server 2012 R2
– IIS 10.0 unter 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

Weitere Informationen

Webserverkernklassen
Erstellen von Native-Code HTTP-Modulen
CHttpModule-Klasse