IHttpCacheSpecificData::D ereferenceCacheData メソッド
キャッシュされたデータの内部参照カウントをデクリメントします。
構文
virtual VOID DereferenceCacheData(
VOID
) = 0;
パラメーター
このメソッドは、パラメーターを受け取りません。
スレッド セーフ
IHttpCacheSpecificData インターフェイスを実装するクラスは、 メソッドと ReferenceCacheData メソッドのスレッド セーフDereferenceCacheData
です。
解説
インターフェイスを IHttpCacheSpecificData
実装するクラスは、メモリ管理にスレッド セーフな参照カウントを使用します。 ポインターが IHttpCacheSpecificData
構築されると、内部参照カウント ( private
メンバー変数) が 1 に設定されます。 メソッドが ReferenceCacheData
呼び出されると、この参照カウントは 1 ずつインクリメントされます。 メソッドが DereferenceCacheData
呼び出されると、この同じ参照カウントが 1 ずつデクリメントされます。 参照カウントが 0 になった場合にのみ、 IHttpCacheSpecificData
ヒープからポインターが削除されます。 このスキームでは、ポインターの最後の IHttpCacheSpecificData
クライアントが を呼び出 DereferenceCacheData
すまで、ポインターが削除されないことが保証されます。
実装側の注意
ReferenceCacheData
および DereferenceCacheData
メソッドの実装は、インターフェイスのスレッド セーフであるIHttpCacheSpecificData
必要があります。 実装者は、参照カウントが 0 になったときにのみ内部的に呼び出される デストラクターまたは private
デストラクターを提供protected
する必要があります。
呼び出し元に関する注意事項
クライアントは、インターフェイスをより具体的な IHttpCacheSpecificData
クラスにキャストしてから、直接を呼び出 delete
そうとしないでください。 クライアントは、インターフェイスへのポインターがReferenceCacheData
取得されたときにメソッドを 1 回だけ呼び出し、ポインターがアクセスされなくなったときに メソッドをIHttpCacheSpecificData
呼び出すDereferenceCacheData
必要IHttpCacheSpecificData
があります。 メソッドと DereferenceCacheData
メソッドはできるだけ早く、できるだけ遅く呼び出ReferenceCacheData
して、ポインターがIHttpCacheSpecificData
アクセスされ、不要になったときに削除されたときにヒープで有効であることを保証する必要があります。
例
次のコード例は、 メソッドを実装する というクラス MySpecificData
を IHttpCacheSpecificData
示しています。
// Create a class that implements the IHttpCacheSpecificData interface.
class MySpecificData : public IHttpCacheSpecificData
{
public:
// Create a public constructor.
// Set the internal reference count to 1.
MySpecificData ()
{
m_cRefs = 1;
}
// Increment the internal reference count.
virtual VOID ReferenceCacheData(VOID)
{
InterlockedIncrement(&m_cRefs);
}
// Decrement the internal reference count.
virtual VOID DereferenceCacheData(VOID)
{
// Decrement the reference count and delete this
// if the count is 0.
if (0 == InterlockedDecrement(&m_cRefs))
{
delete this;
}
}
// To do: implement custom MySpecificData implementation.
private:
// Create a private destructor called from DereferenceCacheData.
virtual ~MySpecificData ()
{
}
// Create a private reference count member.
LONG m_cRefs;
}
要件
Type | 説明 |
---|---|
Client | - Windows Vista 上の IIS 7.0 - Windows 7 上の IIS 7.5 - Windows 8 の IIS 8.0 - Windows 10の IIS 10.0 |
サーバー | - Windows Server 2008 の IIS 7.0 - Windows Server 2008 R2 上の IIS 7.5 - Windows Server 2012 上の IIS 8.0 - Windows Server 2012 R2 上の IIS 8.5 - Windows Server 2016上の IIS 10.0 |
製品 | - 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 |
参照
IHttpCacheSpecificData インターフェイス
IHttpFileInfo インターフェイス
IHttpTokenEntry インターフェイス