Indicateurs CTF

Indicateurs qui contrôlent le comportement de la fonction appelante. Utilisé par SHCreateThread et SHCreateThreadWithHandle. Dans ces fonctions, ces valeurs sont définies comme étant de type SHCT_FLAGS.

Constante/valeur Description
CTF_INSIST
0x00000001
0x00000001. Si la tentative de création du thread avec CreateThread échoue, la définition de cet indicateur entraîne l’appel synchrone de la fonction pointée par pfnThreadProc à partir du thread appelant. Cet indicateur ne peut être utilisé que si pfnCallback a la valeur NULL.
CTF_THREAD_REF
0x00000002
0x00000002. Conservez une référence au thread de création pendant la durée de l’appel à la fonction pointée par pfnThreadProc. Cette référence doit avoir été définie avec SHSetThreadRef.
CTF_PROCESS_REF
0x00000004
0x00000004. Conservez une référence au processus de Explorer Windows pendant la durée de l’appel à la fonction pointée par pfnThreadProc. Cet indicateur est utile pour les gestionnaires d’extensions Shell, qui peuvent avoir besoin d’empêcher la fermeture prématurée du processus windows Explorer. Cette action est utile lors de tâches telles que l’utilisation d’un thread d’arrière-plan ou la copie de fichiers. Pour plus d’informations, consultez SHGetInstanceExplorer.
CTF_COINIT_STA
0x00000008
0x00000008. Initialisez COM en tant que single threaded Apartment (STA) pour le thread créé avant d’appeler la fonction facultative pointée par pfnCallback ou la fonction pointée vers pfnThreadProc. Cet indicateur est utile lorsque COM doit être initialisé pour un thread. COM sera également automatiquement non initialisé.
CTF_COINIT
0x00000008
Équivalent à CTF_COINIT_STA.
CTF_FREELIBANDEXIT
0x00000010
0x00000010. Internet Explorer 6 ou version ultérieure.LoadLibrary est appelé sur la DLL qui contient la fonction pfnThreadProc pour empêcher son déchargement. Une fois que pfnThreadProc est retourné, la DLL est libérée avec FreeLibrary, ce qui décrémente le nombre de références DLL. Passez cet indicateur pour empêcher le déchargement prématuré de la DLL ; par exemple, par CoFreeUnusedLibraries. Notez que si cet indicateur est passé, la fonction pfnThreadProc doit résider dans une DLL. Cet indicateur est implicite dans Windows Vista et versions ultérieures.
CTF_REF_COUNTED
0x00000020
0x00000020. Internet Explorer 6 ou version ultérieure. Une référence de thread est automatiquement créée pour le thread créé et définie avec SHSetThreadRef. Une fois que le pfnThreadProc est retourné, la référence de thread est publiée et les messages sont envoyés jusqu’à ce que le nombre de références sur la référence de thread tombe à zéro, c’est-à-dire jusqu’à ce que les threads dépendant du thread créé aient libéré leurs références.
CTF_WAIT_ALLOWCOM
0x00000040
0x00000040. Internet Explorer 6 ou version ultérieure. Le thread appelant attend et pompe les messages COM et SendMessage . Si la procédure synchrone tente d’envoyer un message Windows avec SendMessage à une fenêtre hébergée sur le thread appelant, le message arrive correctement. Si la procédure synchrone tente d’utiliser COM pour communiquer avec un objet STA hébergé sur le thread appelant, l’appel de fonction atteint l’objet prévu. Le thread d’appel est ouvert à la fragilité de la nouvelle entrée. Bien que le thread appelant puisse gérer l’utilisation par la procédure synchrone de SendMessage et DE COM, si d’autres threads utilisent SendMessage ou COM pour communiquer avec des objets hébergés sur le thread appelant, il peut s’agir de messages inattendus ou d’appels de fonction qui sont traités pendant que la procédure synchrone est terminée.
CTF_UNUSED
0x00000080
0x00000080. Internet Explorer 7 ou version ultérieure. Non utilisé.
CTF_INHERITWOW64
0x00000100
0x00000100. Internet Explorer 7 ou version ultérieure. Le nouveau thread hérite de l’état de désactivation de Windows sur Windows 64 bits (WOW64) pour le redirecteur du système de fichiers.
CTF_WAIT_NO_REENTRANCY
0x00000200
0x00000200. Windows Vista ou version ultérieure. Le thread appelant bloque tous les autres processus en attendant que la procédure synchrone s’exécute sur le nouveau thread. Si la procédure synchrone tente d’envoyer un message Windows avec SendMessage à une fenêtre hébergée sur le thread appelant, la procédure synchrone est bloquée. Si la procédure synchrone tente d’utiliser COM pour communiquer avec un objet STA hébergé sur le thread appelant, cela entraîne également un blocage de la procédure synchrone. Le thread appelant est protégé contre tous les problèmes de réentrée en spécifiant cet indicateur.
CTF_KEYBOARD_LOCALE
0x00000400
0x00000400. Windows 7 ou version ultérieure. Utilisez les paramètres régionaux du clavier du thread d’origine dans le nouveau thread qu’il génère.
CTF_OLEINITIALIZE
0x00000800
0x00000800. Windows 7 ou version ultérieure. Initialisez COM avec le modèle d’appartement à thread unique (STA) pour le thread créé.
CTF_COINIT_MTA
0x00001000
0x00001000. Windows 7 et versions ultérieures. Initialisez COM avec le modèle d’appartement multithread (MTA) pour le thread créé.
CTF_NOADDREFLIB
0x00002000
0x00002000. Windows 7 ou version ultérieure. Cet indicateur est essentiellement le contraire de CTF_FREELIBANDEXIT. Cela évite les appels LoadLibrary/FreeLibraryAndExitThread qui peuvent entraîner une contention pour le verrou du chargeur. Utilisez CTF_NOADDREFLIB uniquement lorsque le nouveau thread dispose de moyens pour vous assurer que le code de la procédure de thread d’origine reste chargé. Cette valeur ne doit pas être utilisée dans le contexte des objets COM, car les objets COM doivent garantir que la DLL reste chargée (normalement, COM décharge les DLL).

Notes

Si aucun indicateur CTF_WAIT_ n’est spécifié, le thread appelant attend et envoie des messages SendMessage . Si la procédure synchrone tente d’envoyer un message Windows avec SendMessage à une fenêtre hébergée sur le thread appelant, le message arrive à la fenêtre prévue. Si la procédure synchrone tente d’utiliser COM pour communiquer avec un objet STA hébergé sur le thread appelant, la procédure synchrone est bloquée. Le thread d’appel est ouvert à la fragilité de la nouvelle entrée. Bien que le thread appelant puisse gérer l’utilisation de SendMessage par la procédure synchrone, si d’autres threads utilisent SendMessage pour communiquer avec une fenêtre hébergée sur le thread appelant, ces messages peuvent être inattendus. Cela peut entraîner leur traitement pendant la fin de la procédure synchrone.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel, Windows XP, Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Shlwapi.h