Método IHttpUrlInfo::GetModuleContextContainer
Retorna o contêiner de contexto para as informações específicas da URL.
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 GetModuleContextContainer
valor retornado do método depende da implementação. Por padrão, a implementação atual cria uma interface IDispensedHttpModuleContextContainer sincronizada, mas não dispensada.
Notas para implementadores
Os implementadores IHttpUrlInfo são responsáveis pelo gerenciamento de memória com esses dados; portanto, IHttpUrlInfo
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 IHttpUrlInfo
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 IHttpUrlInfo
interface, esse destruidor deve chamar o método IDispensedHttpModuleContextContainer::ReleaseContainer nessa private
referência e 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 usar uma conversão explícita para maior clareza do programa. Considere também o uso do operador dynamic_cast sempre que possível.
Observações para chamadores
IHttpUrlInfo
os implementadores são responsáveis pelo gerenciamento de memória com esses dados; portanto, IHttpUrlInfo
os clientes não devem liberar, chamar delete
ou tentar reduzir 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 IHttpUrlInfo
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 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
// IHttpUrlInfo interface.
class MyClass : public IHttpUrlInfo
{
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.
// IDispensedHttpModuleContextContainer
// pointer for readability.
virtual IHttpModuleContextContainer*
GetModuleContextContainer(VOID)
{
return (IHttpModuleContextContainer*)m_container;
}
// Implement additional IHttpUrlInfo
// 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
IHttpUrlInfo Interface
Método IHttpApplication::GetModuleContextContainer
Método IHttpConnection::GetModuleContextContainer
Método IHttpContext::GetModuleContextContainer
Método IHttpFileInfo::GetModuleContextContainer
Método IHttpFileMonitor::GetModuleContextContainer
Método IHttpSite::GetModuleContextContainer
Método IMetadataInfo::GetModuleContextContainer