Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Effectue une opération de cache spécifique.
Syntaxe
virtual HRESULT DoCacheOperation(
IN CACHE_OPERATION cacheOperation,
IN IHttpCacheKey* pCacheKey,
OUT IHttpCacheSpecificData** ppCacheSpecificData,
IN IHttpTraceContext* pHttpTraceContext = NULL
) = 0;
Paramètres
cacheOperation
[IN] Valeur d’énumération CACHE_OPERATION .
pCacheKey
[IN] Pointeur vers une interface IHttpCacheKey .
ppCacheSpecificData
[OUT] Pointeur vers l’adresse d’une interface IHttpCacheSpecificData .
pHttpTraceContext
[IN] Pointeur vers une interface IHttpTraceContext . (Facultatif.)
Valeur renvoyée
Élément HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.
| Valeur | Description |
|---|---|
| S_OK | Indique que l’opération a réussi. |
Remarques
La DoCacheOperation méthode est utilisée dans les modules HTTP pour effectuer l’opération de cache spécifiée par le cacheOperation paramètre . Par exemple, les valeurs d’énumération CACHE_OPERATION_ADD et CACHE_OPERATION_DELETE stockent ou suppriment des objets, respectivement, du cache. Lorsque votre module appelle la DoCacheOperation méthode, il doit passer une IHttpCacheKey interface dans le pCacheKey paramètre, et IIS retourne une IHttpCacheSpecificData interface dans le ppCacheSpecificData paramètre. Vous pouvez éventuellement spécifier une IHttpTraceContext interface dans le pHttpTraceContext paramètre pour identifier la demande qui a déclenché l’appel. (Cela n’est nécessaire qu’à des fins de suivi.)
Notes
Les implémenteurs ne doivent pas appeler DoCacheOperation à l’intérieur de la méthode IHttpApplicationResolveModulesProvider::RegisterModule , car il est trop tôt dans le pipeline de requête.
Exemple
L’exemple de code suivant montre comment utiliser la DoCacheOperation méthode pour créer un module HTTP qui teste une opération de CACHE_OPERATION_RETRIEVE et déclenche une opération de CACHE_OPERATION_ENUM .
#define _WINSOCKAPI_
#include <windows.h>
#include <sal.h>
#include <httpserv.h>
IHttpServer * g_pGlobalInfo;
// Create the module's global class.
class MyGlobalModule : public CGlobalModule
{
public:
GLOBAL_NOTIFICATION_STATUS
OnGlobalCacheOperation(
IN ICacheProvider * pProvider
)
{
if (CACHE_OPERATION_RETRIEVE == pProvider->GetCacheOperation())
{
// Retrieve an IHttpCacheKey interface.
IHttpCacheKey * pCacheKey = pProvider->GetCacheKey();
// Test for an error.
if (NULL == pCacheKey) return GL_NOTIFICATION_CONTINUE;
// Initialize an IHttpCacheSpecificData interface pointer.
IHttpCacheSpecificData * pCacheSpecificData = NULL;
// Peform a cache enumeration operation.
HRESULT hr = g_pGlobalInfo->DoCacheOperation(
CACHE_OPERATION_ENUM,pCacheKey,&pCacheSpecificData,NULL);
// Test for an error.
if (FAILED(hr)) return GL_NOTIFICATION_HANDLED;
}
// Return processing to the pipeline.
return GL_NOTIFICATION_CONTINUE;
}
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 );
g_pGlobalInfo = 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_CACHE_OPERATION );
}
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 Request-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
IHttpServer Interface
CACHE_OPERATION, énumération
IHttpCacheKey, interface
IHttpCacheSpecificData, interface
IHttpTraceContext, interface