Compartir a través de


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)