IHttpFileMonitor::GetModuleContextContainer (Método)
Recupera el contenedor de contexto del módulo para una interfaz de monitor de archivos.
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 IHttpFileMonitor son responsables de la administración de memoria con estos datos; por lo tanto, IHttpFileMonitor
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 IHttpFileMonitor
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 IHttpFileMonitor
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
IHttpFileMonitor
los implementadores son responsables de la administración de memoria con estos datos; Por lo tanto, los IHttpFileMonitor
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 IHttpFileMonitor
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 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
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
IHttpFileMonitor (interfaz)
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 (Método)