Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Defines the base class for global-level HTTP modules.
Syntax
class CGlobalModule
Methods
The following table lists the methods exposed by the CGlobalModule
class.
Name | Description |
---|---|
OnGlobalApplicationPreload | deddc775-1ab0-492c-bda0-b32be5d4f4cc |
OnGlobalApplicationResolveModules | Represents the method that will handle a GlobalApplicationResolveModules event, which occurs when IIS resolves the registered modules. |
OnGlobalApplicationStart | Represents the method that will handle a GlobalApplicationStart event, which occurs when IIS starts an application. |
OnGlobalApplicationStop | Represents the method that will handle a GlobalApplicationStop event, which occurs when IIS shuts down an application. |
OnGlobalCacheCleanup | Represents the method that will handle a GlobalCacheCleanup event. |
OnGlobalCacheOperation | Represents the method that will handle a GlobalCacheOperation event, which occurs when IIS performs a cache-related operation. |
OnGlobalConfigurationChange | Represents the method that will handle a GlobalConfigurationChange event, which occurs when a change is made to a configuration file. |
OnGlobalCustomNotification | Represents the method that will handle a GlobalCustomNotification event, which occurs when a module raises a user-defined notification. |
OnGlobalFileChange | Represents the method that will handle a GlobalFileChange event, which occurs when a file within a Web site is changed. |
OnGlobalHealthCheck | Represents the method that will handle a GlobalHealthCheck event, which occurs when a health-related operation is executed. |
OnGlobalPreBeginRequest | Represents the method that will handle a GlobalPreBeginRequest event, which occurs before a request enters the pipeline. |
OnGlobalRSCAQuery | Represents the method that will handle a GlobalRSCAQuery event, which occurs when a Run-Time Status and Control query is executed. |
OnGlobalStopListening | Represents the method that will handle a GlobalStopListening event, which occurs when IIS stops accepting new requests. |
OnGlobalThreadCleanup | Represents the method that will handle a GlobalThreadCleanup event, which occurs when IIS returns a thread to the thread pool. |
OnGlobalTraceEvent | Represents the method that will handle a GlobalTraceEvent event, which occurs when a trace event is raised. |
Terminate | Represents the method that IIS calls when a global module has completed processing. |
Derived Classes
This class contains no derived classes.
Remarks
The CGlobalModule
class is the base class for global-level HTTP modules. Global-level HTTP modules must contain a class that inherits from CGlobalModule
. CGlobalModule
defines the methods that IIS 7 calls to handle global-level notifications when global-level events occur. An HTTP module can register for specific events by defining a list of notifications in a module's exported RegisterModule function. When a global-level module has finished processing, the module should use the CGlobalModule::Terminate method to remove CGlobalModule
instances from memory.
Example
The following code example demonstrates how to create a simple "Hello World" global-level HTTP module. The module defines an exported RegisterModule function that creates an instance of a class that is derived from CGlobalModule
. If the class cannot be created, the function exits with an error code; otherwise, the function calls the IHttpModuleRegistrationInfo::SetRequestNotifications method to register for the GL_PRE_BEGIN_REQUEST notification.
When a GL_PRE_BEGIN_REQUEST
notification occurs, IIS calls the module's CGlobalModule::OnGlobalPreBeginRequest method to process the notification. The method calls a private method to write an event to the application log of the Event Viewer, and then it returns GL_NOTIFICATION_CONTINUE to notify IIS to continue processing other notifications. When processing is complete, IIS calls the module's CGlobalModule::Terminate method to remove the class from memory.
#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 );
}
Your module must export the RegisterModule function. You can export this function by creating a module definition (.def) file for your project, or you can compile the module by using the /EXPORT:RegisterModule
switch. For more information, see Walkthrough: Creating a Global-Level HTTP Module By Using Native Code.
You can optionally compile the code by using the __stdcall (/Gz)
calling convention instead of explicitly declaring the calling convention for each function.
Requirements
Type | Description |
---|---|
Client | - IIS 7.0 on Windows Vista - IIS 7.5 on Windows 7 - IIS 8.0 on Windows 8 - IIS 10.0 on Windows 10 |
Server | - IIS 7.0 on Windows Server 2008 - IIS 7.5 on Windows Server 2008 R2 - IIS 8.0 on Windows Server 2012 - IIS 8.5 on Windows Server 2012 R2 - IIS 10.0 on Windows Server 2016 |
Product | - 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 |
See Also
Web Server Core Classes
Creating Native-Code HTTP Modules
CHttpModule Class