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.
Triggers a notification that a file has changed.
Syntax
virtual VOID NotifyFileChange(  
   IN PCWSTR pszFileName  
) = 0;  
Parameters
pszFileName
[IN] A pointer to a string that contains the path to a file.
Return Value
VOID.
Remarks
IIS 7 automatically triggers a GL_FILE_CHANGE notification when a file within a Web site is modified. Developers can use the NotifyFileChange method to manually trigger a GL_FILE_CHANGE notification for a file path that is specified in the pszFileName parameter.
Note
Developers can use the CGlobalModule::OnGlobalFileChange method to provide additional processing when a GL_FILE_CHANGE notification occurs.
Example
The following code example demonstrates how to use the NotifyFileChange method to create an HTTP module that manually triggers a GL_FILE_CHANGE notification for the C:\Inetpub\Wwwroot\Default.aspx file.
#define _WINSOCKAPI_
#include <windows.h>
#include <sal.h>
#include <httpserv.h>
// Create a pointer for the global server interface.
IHttpServer * g_pHttpServer = NULL;
// Create the module class.
class MyHttpModule : public CHttpModule
{
public:
    REQUEST_NOTIFICATION_STATUS
    OnBeginRequest(
        IN IHttpContext * pHttpContext,
        IN IHttpEventProvider * pProvider
    )
    {
        UNREFERENCED_PARAMETER( pHttpContext );
        UNREFERENCED_PARAMETER( pProvider );
        g_pHttpServer->NotifyFileChange(
            L"c:\\inetpub\\wwwroot\\default.aspx");
        // Return processing to the pipeline.
        return RQ_NOTIFICATION_CONTINUE;
    }
};
// Create the module's class factory.
class MyHttpModuleFactory : public IHttpModuleFactory
{
public:
    HRESULT
    GetHttpModule(
        OUT CHttpModule ** ppModule, 
        IN IModuleAllocator * pAllocator
    )
    {
        UNREFERENCED_PARAMETER( pAllocator );
        // Create a new instance.
        MyHttpModule * pModule = new MyHttpModule;
        // Test for an error.
        if (!pModule)
        {
            // Return an error if the factory cannot create the instance.
            return HRESULT_FROM_WIN32( ERROR_NOT_ENOUGH_MEMORY );
        }
        else
        {
            // Return a pointer to the module.
            *ppModule = pModule;
            pModule = NULL;
            // Return a success status.
            return S_OK;
        }            
    }
    void Terminate()
    {
        // Remove the class from memory.
        delete this;
    }
};
// Create the module's exported registration function.
HRESULT
__stdcall
RegisterModule(
    DWORD dwServerVersion,
    IHttpModuleRegistrationInfo * pModuleInfo,
    IHttpServer * pGlobalInfo
)
{
    UNREFERENCED_PARAMETER( dwServerVersion );
    // Store the pointer for the global server interface.
    g_pHttpServer = pGlobalInfo;
    // Set the request priority.
    HRESULT hr = pModuleInfo->SetPriorityForRequestNotification(
        RQ_BEGIN_REQUEST,PRIORITY_ALIAS_MEDIUM);
    // Test for an error and exit if necessary.
    if (FAILED(hr))
    {
        return hr;
    }
    // Set the request notifications and exit.
    return pModuleInfo->SetRequestNotifications(
        new MyHttpModuleFactory,
        RQ_BEGIN_REQUEST,
        0
    );
}
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 Request-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 Technical Preview  | 
| 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
IHttpServer Interface
CGlobalModule::OnGlobalFileChange Method
Request-Processing Constants