Compartir a través de


Marcas CTF

Marcas que controlan el comportamiento de la función de llamada. Usado por SHCreateThread y SHCreateThreadWithHandle. En esas funciones, estos valores se definen como de tipo SHCT_FLAGS.

Constante o valor Descripción
CTF_INSIST
0x00000001
0x00000001. Si se produce un error en el intento de crear el subproceso con CreateThread , al establecer esta marca, la función a la que apunta pfnThreadProc se llamará sincrónicamente desde el subproceso que realiza la llamada. Esta marca solo se puede usar si pfnCallback es NULL.
CTF_THREAD_REF
0x00000002
0x00000002. Mantenga una referencia al subproceso de creación mientras dure la llamada a la función a la que apunta pfnThreadProc. Esta referencia debe haberse establecido con SHSetThreadRef.
CTF_PROCESS_REF
0x00000004
0x00000004. Mantenga una referencia al proceso del Explorador de Windows mientras dure la llamada a la función a la que apunta pfnThreadProc. Esta marca es útil para los controladores de extensión de Shell, lo que puede que tenga que impedir que el proceso del Explorador de Windows se cierre prematuramente. Esta acción es útil durante tareas como trabajar en un subproceso en segundo plano o copiar archivos. Para obtener más información, vea SHGetInstanceExplorer.
CTF_COINIT_STA
0x00000008
0x00000008. Inicialice COM como un contenedor de subprocesos único (STA) para el subproceso creado antes de llamar a la función opcional a la que apunta pfnCallback o a la función a la que apunta pfnThreadProc. Esta marca es útil cuando es necesario inicializar COM para un subproceso. COM también se anulará inicializará automáticamente.
CTF_COINIT
0x00000008
Equivalente a CTF_COINIT_STA.
CTF_FREELIBANDEXIT
0x00000010
0x00000010. Internet Explorer 6 o posterior. Se llamará a LoadLibrary en el archivo DLL que contiene la función pfnThreadProc para evitar que se descargue. Después de que pfnThreadProc devuelva, el archivo DLL se liberará con FreeLibrary, lo que reduce el recuento de referencias de DLL. Pase esta marca para evitar que el archivo DLL se descargue prematuramente; por ejemplo, por CoFreeUnusedLibraries. Tenga en cuenta que si se pasa esta marca, la función pfnThreadProc debe residir en un archivo DLL. Esta marca está implícita en Windows Vista y versiones posteriores.
CTF_REF_COUNTED
0x00000020
0x00000020. Internet Explorer 6 o posterior. Se creará automáticamente una referencia de subproceso para el subproceso creado y se establecerá con SHSetThreadRef. Después de que se devuelva pfnThreadProc , se libera la referencia del subproceso y los mensajes se envían hasta que el recuento de referencias de la referencia del subproceso cae a cero, es decir, hasta que los subprocesos que dependen del subproceso creado hayan liberado sus referencias.
CTF_WAIT_ALLOWCOM
0x00000040
0x00000040. Internet Explorer 6 o posterior. El subproceso que llama espera y bombea mensajes COM y SendMessage . Si el procedimiento sincrónico intenta enviar un mensaje de Windows con SendMessage a una ventana hospedada en el subproceso de llamada, el mensaje llegará correctamente. Si el procedimiento sincrónico intenta usar COM para comunicarse con un objeto STA hospedado en el subproceso de llamada, la llamada de función alcanzará correctamente el objeto deseado. El subproceso de llamada está abierto para volver a entrar fragilidad. Aunque el subproceso de llamada puede controlar el uso del procedimiento sincrónico de SendMessage y COM, si otros subprocesos usan SendMessage o COM para comunicarse con objetos hospedados en el subproceso que realiza la llamada, pueden ser mensajes inesperados o llamadas de función que se procesan mientras se completa el procedimiento sincrónico.
CTF_UNUSED
0x00000080
0x00000080. Internet Explorer 7 o posterior. No se usa.
CTF_INHERITWOW64
0x00000100
0x00000100. Internet Explorer 7 o posterior. El nuevo subproceso hereda el estado de deshabilitación de Windows en Windows de 64 bits (WOW64) para el redirector del sistema de archivos.
CTF_WAIT_NO_REENTRANCY
0x00000200
0x00000200. Windows Vista o posterior. El subproceso que realiza la llamada bloquea todos los demás procesos mientras espera a que el procedimiento sincrónico se ejecute en el nuevo subproceso. Si el procedimiento sincrónico intenta enviar un mensaje de Windows con SendMessage a una ventana hospedada en el subproceso de llamada, esto hace que el procedimiento sincrónico interbloquee. Si el procedimiento sincrónico intenta usar COM para comunicarse con un objeto STA hospedado en el subproceso que realiza la llamada, esto también hace que el procedimiento sincrónico interbloquee. El subproceso que realiza la llamada está protegido frente a todos los problemas de reinserción especificando esta marca.
CTF_KEYBOARD_LOCALE
0x00000400
0x00000400. Windows 7 o versión posterior. Use la configuración regional del teclado del subproceso original en el nuevo subproceso que genera.
CTF_OLEINITIALIZE
0x00000800
0x00000800. Windows 7 o versión posterior. Inicialice COM con el modelo de apartamento uniproceso (STA) para el subproceso creado.
CTF_COINIT_MTA
0x00001000
0x00001000. Windows 7 y versiones posteriores. Inicialice COM con el modelo de apartamento multiproceso (MTA) para el subproceso creado.
CTF_NOADDREFLIB
0x00002000
0x00002000. Windows 7 o versión posterior. Esta marca es esencialmente lo contrario de CTF_FREELIBANDEXIT. Esto evita las llamadasa LoadLibrary FreeLibraryAndExitThread que pueden dar lugar a la contención del bloqueo del cargador./ Use CTF_NOADDREFLIB solo cuando el nuevo subproceso tenga medios para asegurarse de que el código del procedimiento de subproceso original permanecerá cargado. Este valor no se debe usar en el contexto de objetos COM, ya que los objetos COM deben asegurarse de que el archivo DLL permanece cargado (normalmente, COM descarga los archivos DLL).

Comentarios

Si no se especifica ninguna marca de CTF_WAIT_, el subproceso de llamada esperará y enviará mensajes SendMessage . Si el procedimiento sincrónico intenta enviar un mensaje de Windows con SendMessage a una ventana hospedada en el subproceso de llamada, el mensaje llegará a la ventana prevista. Si el procedimiento sincrónico intenta usar COM para comunicarse con un objeto STA hospedado en el subproceso que llama, el procedimiento sincrónico se interbloqueará. El subproceso de llamada está abierto para volver a entrar a la fragilidad. Aunque el subproceso de llamada puede controlar el uso del procedimiento sincrónico de SendMessage, si otros subprocesos usan SendMessage para comunicarse con una ventana hospedada en el subproceso de llamada, estos mensajes podrían ser inesperados. Esto puede hacer que se procesen mientras se completa el procedimiento sincrónico.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 2000 Professional, Windows XP, Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Shlwapi.h