REVISIÓN: La DLL que utiliza ATL CImage (clase) puede causar un interbloqueo en un proceso

Seleccione idioma Seleccione idioma
Id. de artículo: 322909 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Un archivo DLL que utiliza la clase de ATL (Active Template Library) CImage puede causar un bloqueo cuando se descarga desde un proceso o cuando se cierra el proceso de carga.

Causa

Este problema se produce porque la clase CImage inicializa y, a continuación, apaga GDI + mediante la clase anidada CInitGDIPlus estática. Esta clase inicializa GDI + antes de cualquier función CImage que requiere que GDI + se llama. GDI + se cierra llamando GdiplusShutdown cuando se destruye la clase CInitGDIPlus . CInitGDIPlus es una clase estática que se destruye en un archivo DLL en el contexto de DllMain . La documentación indica que no puede llamar a GdiplusShutdown en DllMain .

Solución

Información de Service Pack

Para resolver este problema, obtenga el service pack más reciente de Visual Studio.NET. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
837234Lista de errores corregidos en Visual Studio .NET 2002 1

Información de revisiones

Para obtener más información acerca de esta revisión, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
326459Comparación de COleDateTime aserciones o devuelve un valor incorrecto

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a". Este problema se corrigió por primera vez en Visual Studio .NET 2002 1.

Más información

Pasos para reproducir el comportamiento

  1. Cree un proyecto de DLL ATL denominado Control_Name .htm e inserte un control ActiveX control.
  2. Agregar a un miembro CImage a la clase del control ActiveX.
  3. Llame a CImage::Load en el constructor de clase de control de ActiveX.
  4. Ver la página .htm que crea para el control (Control_Name .htm) en Microsoft Internet Explorer.
  5. Cierre Internet Explorer. Debe experimentar uno de las condiciones siguientes:
    • No puede iniciar Internet Explorer de nuevo.

      -o bien -
    • El proceso IExplore.exe sigue apareciendo en el Administrador de tareas.

Propiedades

Id. de artículo: 322909 - Última revisión: martes, 27 de septiembre de 2005 - Versión: 7.1
La información de este artículo se refiere a:
  • The Microsoft Active Template Library (ATL) 7.0 sobre las siguientes plataformas
    • Microsoft Visual Studio .NET 2002 Enterprise Architect
    • Microsoft Visual Studio .NET 2002 Enterprise Developer
    • Microsoft Visual Studio .NET 2002 Professional
    • Microsoft Visual Studio .NET 2002 Academic Edition
Palabras clave: 
kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbbug kbfix KB322909 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 322909

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com