fonction TF_GetThreadMgr (msctf.h)
La fonction TF_GetThreadMgr obtient une copie d’un objet de gestionnaire de threads créé précédemment dans le thread appelant.
Syntaxe
HRESULT TF_GetThreadMgr(
[out] ITfThreadMgr **pptim
);
Paramètres
[out] pptim
Pointeur vers un pointeur d’interface ITfThreadMgr qui reçoit l’objet gestionnaire de threads. Cette opération reçoit la valeur NULL si aucun gestionnaire de threads n’est créé dans le thread appelant.
Valeur retournée
Valeur | Signification |
---|---|
S_OK | La fonction a réussi. pptim aura la valeur NULL si aucun gestionnaire de threads n’est créé dans le thread appelant. |
E_FAIL | Une erreur non spécifiée s'est produite. |
Remarques
Si aucun gestionnaire de threads n’est créé dans le thread appelant, cette fonction définit pptim sur NULL et retourne S_OK. Par conséquent, il est nécessaire de vérifier que la fonction a réussi et que pptim n’est pas NULL avant d’utiliser pptim.
Exemples
Il n’existe aucune bibliothèque d’importation disponible qui définit cette fonction. Il est donc nécessaire d’obtenir manuellement un pointeur vers cette fonction à l’aide de LoadLibrary et de GetProcAddress. L’exemple de code suivant montre comment effectuer cette opération.
L’exemple suivant illustre une fonction qui tente d’obtenir une copie d’un objet gestionnaire de threads créé précédemment. S’il n’existe aucun objet de gestionnaire de threads dans le thread appelant, la fonction en crée un.
L’utilisation incorrecte de LoadLibrary peut compromettre la sécurité de votre application en chargeant la DLL incorrecte. Pour plus d’informations sur le chargement correct des DLL avec différentes versions de Windows, reportez-vous à la documentation LoadLibrary .
typedef HRESULT (WINAPI *PTF_GETTHREADMGR)(ITfThreadMgr **pptim);
HRESULT GetThreadMgr(ITfThreadMgr **pptm)
{
HRESULT hr = E_FAIL;
HMODULE hMSCTF = LoadLibrary(TEXT("msctf.dll"));
ITfThreadMgr *pThreadMgr = NULL;
if(hMSCTF == NULL)
{
//Error loading module -- fail as securely as possible
}
else
{
PTF_GETTHREADMGR pfnGetThreadMgr;
pfnGetThreadMgr = (PTF_GETTHREADMGR)GetProcAddress(hMSCTF, "TF_GetThreadMgr");
if(pfnGetThreadMgr)
{
hr = (*pfnGetThreadMgr)(&pThreadMgr);
}
FreeLibrary(hMSCTF);
}
//If no object could be obtained, try to create one.
if(NULL == pThreadMgr)
{
//CoInitialize or OleInitialize must already have been called.
hr = CoCreateInstance( CLSID_TF_ThreadMgr,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITfThreadMgr,
(void**)&pThreadMgr);
}
*pptm = pThreadMgr;
return hr;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | msctf.h |
DLL | Msctf.dll |
Composant redistribuable | TSF 1.0 sur Windows XPWindows 2000 Professionnel |