Compartilhar via


Método IHttpFileMonitor::GetModuleContextContainer

Recupera o contêiner de contexto do módulo para uma interface de monitor de arquivo.

Sintaxe

virtual IHttpModuleContextContainer* GetModuleContextContainer(  
   VOID  
) = 0;  

Parâmetros

Este método não aceita parâmetros.

Valor Retornado

Um ponteiro para um IHttpModuleContextContainer.

Comentários

O valor retornado do GetModuleContextContainer método depende da implementação. Por padrão, a implementação atual cria uma interface IDispensedHttpModuleContextContainer que é sincronizada, mas não dispensada.

Notas para implementadores

Os implementadores IHttpFileMonitor são responsáveis pelo gerenciamento de memória com esses dados; Portanto, IHttpFileMonitor os implementadores devem criar um IDispensedHttpModuleContextContainer ponteiro na construção e manter uma private referência a esse IDispensedHttpModuleContextContainer ponteiro para a vida útil do IHttpFileMonitor ponteiro. Ao chamar o GetModuleContextContainer método , você deve fazer upcast e retornar esse mesmo IDispensedHttpModuleContextContainer ponteiro. Quando você chama o destruidor da classe que implementa a IHttpFileMonitor interface , esse destruidor deve chamar o método IDispensedHttpModuleContextContainer::ReleaseContainer nessa private referência e, em seguida, definir essa referência como NULL.

GetModuleContextContainer não deve retornar NULL. Se o contêiner interno for NULL, defina esse contêiner interno como o valor na chamada como IHttpServer::D ispenseContainer e retorne esse mesmo contêiner.

Observação

Embora as operações de upcast implícitas sejam consideradas seguras, considere o uso de uma conversão explícita para clareza do programa. Considere também usar o operador dynamic_cast sempre que possível.

Observações para chamadores

IHttpFileMonitor os implementadores são responsáveis pelo gerenciamento de memória com esses dados; Portanto, IHttpFileMonitor os clientes não devem liberar, chamar delete ou tentar reduzir o downcast e chamar IDispensedHttpModuleContextContainer::ReleaseContainer no ponteiro retornado IHttpModuleContextContainer quando esses dados não forem mais necessários.

Exemplo

O exemplo de código a seguir demonstra uma classe personalizada chamada MyContainer que implementa a IDispensedHttpModuleContextContainer interface e uma classe personalizada chamada MyClass que implementa a IHttpFileMonitor interface . MyClass gerencia um MyContainer ponteiro durante o tempo de vida de um MyClass ponteiro.

// 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 will   
    // 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  
// IHttpFileMonitor interface.  
class MyClass : public IHttpFileMonitor  
{  
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 upcasted   
    // IDispensedHttpModuleContextContainer  
    // pointer for readability.  
    virtual IHttpModuleContextContainer*   
        GetModuleContextContainer(VOID)  
    {  
        return (IHttpModuleContextContainer*)m_container;  
    }  
  
    // Implement additional IHttpFileMonitor  
    // pure virtual methods if this class  
    // is not abstract.  
  
private:  
    // Specify a private  
    // IDispensedHttpModuleContextContainer  
    // pointer.  
    IDispensedHttpModuleContextContainer* m_container;  
};  

Requisitos

Type Descrição
Cliente – IIS 7.0 no Windows Vista
– IIS 7.5 no Windows 7
– IIS 8.0 no Windows 8
– IIS 10.0 no Windows 10
Servidor – IIS 7.0 no Windows Server 2008
– IIS 7.5 no Windows Server 2008 R2
– IIS 8.0 no Windows Server 2012
– IIS 8.5 no Windows Server 2012 R2
– IIS 10.0 no Windows Server 2016
Produto - 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
parâmetro Httpserv.h

Consulte Também

IHttpFileMonitor Interface
Método IHttpApplication::GetModuleContextContainer
Método IHttpConnection::GetModuleContextContainer
Método IHttpContext::GetModuleContextContainer
Método IHttpFileInfo::GetModuleContextContainer
Método IHttpSite::GetModuleContextContainer
Método IHttpUrlInfo::GetModuleContextContainer
Método IMetadataInfo::GetModuleContextContainer