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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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é. |
|
Équivalent à CTF_COINIT_STA. |
|
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. |
|
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. |
|
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. |
|
0x00000080. Internet Explorer 7 ou version ultérieure. Non utilisé. |
|
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. |
|
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. |
|
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. |
|
0x00000800. Windows 7 ou version ultérieure. Initialisez COM avec le modèle d’appartement à thread unique (STA) pour le thread créé. |
|
0x00001000.
Windows 7 et versions ultérieures. Initialisez COM avec le modèle d’appartement multithread (MTA) pour le thread créé. |
|
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 |
|