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