Partager via


CGlobalModule, classe

Définit la classe de base pour les modules HTTP de niveau global.

Syntaxe

class CGlobalModule  

Méthodes

Le tableau suivant répertorie les méthodes exposées par la CGlobalModule classe .

Nom Description
OnGlobalApplicationPreload deddc775-1ab0-492c-bda0-b32be5d4f4cc
OnGlobalApplicationResolveModules Représente la méthode qui gère un GlobalApplicationResolveModules événement, qui se produit lorsque IIS résout les modules inscrits.
OnGlobalApplicationStart Représente la méthode qui gère un GlobalApplicationStart événement, qui se produit lorsque IIS démarre une application.
OnGlobalApplicationStop Représente la méthode qui gère un GlobalApplicationStop événement, qui se produit lorsque IIS arrête une application.
OnGlobalCacheCleanup Représente la méthode qui gérera un événement GlobalCacheCleanup.
OnGlobalCacheOperation Représente la méthode qui gère un GlobalCacheOperation événement, qui se produit quand IIS effectue une opération liée au cache.
OnGlobalConfigurationChange Représente la méthode qui gère un GlobalConfigurationChange événement, qui se produit lorsqu’une modification est apportée à un fichier de configuration.
OnGlobalCustomNotification Représente la méthode qui gère un GlobalCustomNotification événement, qui se produit lorsqu’un module déclenche une notification définie par l’utilisateur.
OnGlobalFileChange Représente la méthode qui gère un GlobalFileChange événement, qui se produit lorsqu’un fichier au sein d’un site web est modifié.
OnGlobalHealthCheck Représente la méthode qui gère un GlobalHealthCheck événement, qui se produit lors de l’exécution d’une opération liée à l’intégrité.
OnGlobalPreBeginRequest Représente la méthode qui gérera un GlobalPreBeginRequest événement, qui se produit avant qu’une requête n’entre dans le pipeline.
OnGlobalRSCAQuery Représente la méthode qui gère un GlobalRSCAQuery événement, qui se produit lorsqu’une requête d’état et de contrôle Run-Time est exécutée.
OnGlobalStopListening Représente la méthode qui gère un GlobalStopListening événement, qui se produit quand IIS cesse d’accepter de nouvelles demandes.
OnGlobalThreadCleanup Représente la méthode qui gère un GlobalThreadCleanup événement, qui se produit quand IIS retourne un thread au pool de threads.
OnGlobalTraceEvent Représente la méthode qui gère un GlobalTraceEvent événement, qui se produit lorsqu’un événement de trace est déclenché.
Terminer. Représente la méthode qu’IIS appelle lorsqu’un module global a terminé le traitement.

Classes dérivées

Cette classe ne contient aucune classe dérivée.

Remarques

La CGlobalModule classe est la classe de base pour les modules HTTP de niveau global. Les modules HTTP de niveau global doivent contenir une classe qui hérite de CGlobalModule. CGlobalModule définit les méthodes qu’IIS 7 appelle pour gérer les notifications de niveau global lorsque des événements de niveau global se produisent. Un module HTTP peut s’inscrire à des événements spécifiques en définissant une liste de notifications dans la fonction RegisterModule exportée d’un module. Lorsqu’un module de niveau global a terminé le traitement, le module doit utiliser la méthode CGlobalModule::Terminate pour supprimer CGlobalModule des instances de la mémoire.

Exemple

L’exemple de code suivant montre comment créer un simple module HTTP de niveau global « Hello World ». Le module définit une fonction RegisterModule exportée qui crée un instance d’une classe dérivée de CGlobalModule. Si la classe ne peut pas être créée, la fonction se termine avec un code d’erreur ; sinon, la fonction appelle la méthode IHttpModuleRegistrationInfo::SetRequestNotifications pour s’inscrire à la notification GL_PRE_BEGIN_REQUEST .

Lorsqu’une GL_PRE_BEGIN_REQUEST notification se produit, IIS appelle la méthode CGlobalModule::OnGlobalPreBeginRequest du module pour traiter la notification. La méthode appelle une méthode privée pour écrire un événement dans le journal d’application du observateur d'événements, puis retourne GL_NOTIFICATION_CONTINUE pour avertir IIS de continuer à traiter d’autres notifications. Une fois le traitement terminé, IIS appelle la méthode CGlobalModule::Terminate du module pour supprimer la classe de la mémoire.

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

Votre module doit exporter la fonction RegisterModule . Vous pouvez exporter cette fonction en créant un fichier de définition de module (.def) pour votre projet, ou vous pouvez compiler le module à l’aide du /EXPORT:RegisterModule commutateur. Pour plus d’informations, consultez Procédure pas à pas : création d’un module HTTP Global-Level à l’aide de code natif.

Vous pouvez éventuellement compiler le code à l’aide de la __stdcall (/Gz) convention d’appel au lieu de déclarer explicitement la convention d’appel pour chaque fonction.

Spécifications

Type Description
Client - IIS 7.0 sur Windows Vista
- IIS 7.5 sur Windows 7
- IIS 8.0 sur Windows 8
- IIS 10.0 sur Windows 10
Serveur - IIS 7.0 sur Windows Server 2008
- IIS 7.5 sur Windows Server 2008 R2
- IIS 8.0 sur Windows Server 2012
- IIS 8.5 sur Windows Server 2012 R2
- IIS 10.0 sur Windows Server 2016
Produit - 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
En-tête Httpserv.h

Voir aussi

Classes principales du serveur web
Création de modules HTTP Native-Code
CHttpModule, classe