IMetadataInfo::GetModuleContextContainer メソッド
メタデータのコンテキスト コンテナーを返します。
構文
virtual IHttpModuleContextContainer* GetModuleContextContainer(
VOID
) = 0;
パラメーター
このメソッドは、パラメーターを受け取りません。
戻り値
IHttpModuleContextContainer へのポインター。
解説
メソッドの戻り値は GetModuleContextContainer
実装によって異なります。 既定では、現在の実装では、同期 されているが分配されない IDispensedHttpModuleContextContainer インターフェイスが作成されます。
実装側の注意
IMetadataInfo の実装者は、このデータを使用したメモリ管理を担当します。したがって、実装者は構築IMetadataInfo
時にポインターをIDispensedHttpModuleContextContainer
作成し、ポインターの有効期間中、このIDispensedHttpModuleContextContainer
ポインターへの参照を保持private
するIMetadataInfo
必要があります。 メソッドを GetModuleContextContainer
呼び出すときは、アップキャストして、この同じ IDispensedHttpModuleContextContainer
ポインターを返す必要があります。 インターフェイスを実装IMetadataInfo
する クラスのデストラクターを呼び出す場合、このデストラクターは、このprivate
参照で IDispensedHttpModuleContextContainer::ReleaseContainer メソッドを呼び出し、その参照を NULL に設定する必要があります。
GetModuleContextContainer
は NULL を返すべきではありません。 内部コンテナーが NULL の場合は、この内部コンテナーを IHttpServer::D ispenseContainer の呼び出しの値に設定し、この同じコンテナーを返します。
注意
暗黙的なアップキャスト操作は安全であると見なされますが、プログラムをわかりやすくするために明示的なキャストを使用することを検討してください。 また、可能な限り 、dynamic_cast 演算子の使用も検討してください。
呼び出し元に関する注意事項
IMetadataInfo
実装者は、このデータを使用したメモリ管理を担当します。そのため、クライアントは、IMetadataInfo
このデータが不要になったときに、ダウンキャストを解除したり、呼び出delete
したり、ダウンキャストしたり、返されたIHttpModuleContextContainer
ポインターで を呼び出IDispensedHttpModuleContextContainer::ReleaseContainer
したりすることはできません。
例
次のコード例は、 インターフェイスを実装する という名前 MyContainer
のカスタム クラスと、 インターフェイスを IDispensedHttpModuleContextContainer
実装する という名前 MyClass
のカスタム クラスを IMetadataInfo
示しています。 MyClass
は、ポインターの MyContainer
有効期間中にポインターを MyClass
管理します。
// The MyContainer class implements the
// IDispensedHttpModuleContextContainer interface.
class MyContainer : public IDispensedHttpModuleContextContainer
{
public:
// The MyContainer method is the public
// constructor for the MyContainer class.
// Make this method protected if the
// MyContainer class is abstract.
// dispensed: true if the container should
// call delete this when the ReleaseContainer
// method is called.
MyContainer(bool dispensed = false)
: m_dispensed(dispensed)
{
}
// The ReleaseContainer method
// calls delete this if this container
// is dispensed.
virtual VOID ReleaseContainer(VOID)
{
if (m_dispensed)
{
delete this;
}
}
// Implement additional
// IDispensedHttpModuleContextContainer
// pure virtual methods if this class
// is not abstract.
private:
// The MyContainer method is the private
// destructor for the MyContainer class.
// Make this method protected and virtual
// if the MyContainer class expects
// to be a class of derivation. This method
// should not be public because
// IDispensedHttpModuleContextContainer pointers
// should be disposed externally only by
// calling the ReleaseContainer method.
~MyContainer()
{
}
// Specify a Boolean value for dispensing.
bool m_dispensed;
};
// The MyClass class implements the
// IMetadataInfo interface.
class MyClass : public IMetadataInfo
{
public:
// The MyClass method is the public
// constructor for the MyClass class.
MyClass()
{
m_container = new MyContainer;
}
// The MyClass method is the
// public virtual destructor
// for the MyClass class. This destructor
// calls ReleaseContainer on the internal
// IDispensedHttpModuleContextContainer
// pointer and sets that pointer to NULL.
virtual ~MyClass()
{
m_container->ReleaseContainer();
m_container = NULL;
}
// The GetModuleContextContainer method
// returns an IHttpModuleContextContainer
// pointer.
// return: an explicit upcast to an
// IDispensedHttpModuleContextContainer
// pointer for readability.
virtual IHttpModuleContextContainer*
GetModuleContextContainer(VOID)
{
return (IHttpModuleContextContainer*)m_container;
}
// Implement additional IMetadataInfo
// pure virtual methods if this class
// is not abstract.
private:
// Specify a private
// IDispensedHttpModuleContextContainer
// pointer.
IDispensedHttpModuleContextContainer* m_container;
};
要件
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 |
参照
IMetadataInfo インターフェイス
IHttpApplication::GetModuleContextContainer メソッド
IHttpConnection::GetModuleContextContainer メソッド
IHttpContext::GetModuleContextContainer メソッド
IHttpFileInfo::GetModuleContextContainer メソッド
IHttpFileMonitor::GetModuleContextContainer メソッド
IHttpSite::GetModuleContextContainer メソッド
IHttpUrlInfo::GetModuleContextContainer メソッド