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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per