Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

INFORMACIÓN: Funciones de shell de llamada e interfaces de un apartamento multiproceso

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): 287087
Resumen
Al llamar a o acceso a una función de shell o la interfaz de shell desde un subproceso que se haya inicializado como un apartamento multiproceso, la función o interfaz puede tienen su funcionalidad con deficiencias o fallar completamente.
Más información
Una llamada a CoInitializeEx(COINIT_MULTITHREADED) permite las llamadas a objetos creados en el subproceso de llamada para se ejecute en cualquier subproceso. Al tener acceso a objetos que utilizan el modelo desde un apartamento multiproceso de subprocesamiento de apartamento, COM sincronice el acceso al objeto. Para esta sincronización que se produzca, COM debe calcular referencias de las llamadas al objeto. Intente obtener acceso a objetos de shell desde un apartamento multiproceso producirá un error porque el shell, actualmente, no proporciona la información necesaria a través de una biblioteca de tipo o código auxiliar y proxy, para sus objetos cuyas referencias se van a calcular.

Los siguientes son ejemplos de cómo las llamadas a CoInitializeEx(COINIT_MULTITHREADED) pueden afectar a funciones que dependen de objetos de shell:

GetOpenFileName y GetSaveFileName
Los usuarios pueden desplazarse a las carpetas extensión de espacio de nombres como "Mis documentos" a través de los cuadros de diálogo Abrir y Guardar como . Sin embargo, estas carpetas se pueden explorar a porque el explorador no puede crear las interfaces necesarias, como IShellFolder.
ShellExecute y ShellExecuteEx
Enlaces de ShellExecute pueden escribirse para ampliar la funcionalidad de ShellExecute y ShellExecuteEx implementando la interfaz IShellExecuteHook. Cuando se llama a ShellExecute y ShellExecuteEx, enlaces de ShellExecute registrados no pueden cargarse.
En ambos de estos ejemplos, el componente que está intentando obtener un puntero de interfaz a un objeto de shell con CoCreateInstance, IUnknown:: QueryInterface etc. se producirá normalmente error E_NOINTERFACE cuando se llama desde apartamentos multiproceso. El motivo, como se indicó anteriormente, es que no hay ningún código de tipo de información o código auxiliar o proxy para los objetos que se solicita.
Referencias
"Proceso, subprocesos y apartamentos," en los fundamentos de COM en la documentación de Platform SDK:

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 287087 - Última revisión: 07/11/2005 19:05:49 - Revisión: 1.4

Microsoft Platform Software Development Kit-January 2000 Edition

  • kbmt kbinfo kbpending kbshellgrp KB287087 KbMtes
Comentarios
;did=1&t=">