IHttpUrlInfo::GetModuleContextContainer (Método)
Devuelve el contenedor de contexto para la información específica de la dirección URL.
Sintaxis
virtual IHttpModuleContextContainer* GetModuleContextContainer(
VOID
) = 0;
Parámetros
Este método no toma parámetros.
Valor devuelto
Puntero a un IHttpModuleContextContainer.
Comentarios
El valor devuelto del GetModuleContextContainer
método depende de la implementación. De forma predeterminada, la implementación actual crea una interfaz IDispensedHttpModuleContextContainer que está sincronizada pero no dispensada.
Notas para los implementadores
Los implementadores de IHttpUrlInfo son responsables de la administración de memoria con estos datos; por lo tanto, IHttpUrlInfo
los implementadores deben crear un IDispensedHttpModuleContextContainer
puntero en la construcción y contener una private
referencia a este IDispensedHttpModuleContextContainer
puntero para la vida útil del IHttpUrlInfo
puntero. Al llamar al GetModuleContextContainer
método , debe realizar la difusión y devolver este mismo IDispensedHttpModuleContextContainer
puntero. Cuando se llama al destructor de la clase que implementa la IHttpUrlInfo
interfaz , este destructor debe llamar al método IDispensedHttpModuleContextContainer::ReleaseContainer en esta private
referencia y, a continuación, establecer esa referencia en NULL.
GetModuleContextContainer
no debe devolver NULL. Si el contenedor interno es NULL, establezca este contenedor interno en el valor de la llamada a IHttpServer::D ispenseContainer y, a continuación, devuelva este mismo contenedor.
Nota
Aunque las operaciones de difusión implícitas se consideran seguras, considere la posibilidad de usar una conversión explícita para mayor claridad del programa. Considere también la posibilidad de usar el operador dynamic_cast siempre que sea posible.
Notas para autores de la llamada
IHttpUrlInfo
los implementadores son responsables de la administración de memoria con estos datos; Por lo tanto, los IHttpUrlInfo
clientes no deben liberar, llamar delete
a o intentar reducir la difusión y llamar IDispensedHttpModuleContextContainer::ReleaseContainer
al puntero devuelto IHttpModuleContextContainer
cuando estos datos ya no son necesarios.
Ejemplo
En el ejemplo de código siguiente se muestra una clase personalizada denominada MyContainer
que implementa la IDispensedHttpModuleContextContainer
interfaz y una clase personalizada denominada MyClass
que implementa la IHttpUrlInfo
interfaz. MyClass
administra un MyContainer
puntero durante la vigencia de un MyClass
puntero.
// 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
Tipo | Descripción |
---|---|
Remoto | - IIS 7.0 en Windows Vista - IIS 7.5 en Windows 7 - IIS 8.0 en Windows 8 - IIS 10.0 en Windows 10 |
Servidor | - IIS 7.0 en Windows Server 2008 - IIS 7.5 en Windows Server 2008 R2 - IIS 8.0 en Windows Server 2012 - IIS 8.5 en Windows Server 2012 R2 - IIS 10.0 en Windows Server 2016 |
Producto | - 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 |
Encabezado | Httpserv.h |
Consulte también
IHttpUrlInfo (interfaz)
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 (Método)