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