次の方法で共有


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 メソッド