CoInitialize, fonction (objbase.h)
Initialise la bibliothèque COM sur le thread actuel et identifie le modèle d’accès concurrentiel en tant qu’appartement à thread unique (STA).
Les nouvelles applications doivent appeler CoInitializeEx au lieu de CoInitialize.
Si vous souhaitez utiliser le Windows Runtime, vous devez appeler RoInitialize ou Windows::Foundation::Initialize à la place.
Syntaxe
HRESULT CoInitialize(
[in, optional] LPVOID pvReserved
);
Paramètres
[in, optional] pvReserved
Ce paramètre est réservé et doit être NULL.
Valeur retournée
Cette fonction peut retourner les valeurs de retour standard E_INVALIDARG, E_OUTOFMEMORY et E_UNEXPECTED, ainsi que les valeurs suivantes.
Code de retour | Description |
---|---|
|
La bibliothèque COM a été initialisée avec succès sur ce thread. |
|
La bibliothèque COM est déjà initialisée sur ce thread. |
|
Un appel précédent à CoInitializeEx spécifiait le modèle d’accès concurrentiel pour ce thread en tant qu’appartement multithread (MTA). Cela peut également indiquer qu’une modification de l’appartement à thread neutre à l’appartement à thread unique s’est produite. |
Notes
Vous devez initialiser la bibliothèque COM sur un thread avant d’appeler l’une des fonctions de bibliothèque à l’exception de CoGetMalloc, pour obtenir un pointeur vers l’allocateur standard et les fonctions d’allocation de mémoire.
Une fois le modèle d’accès concurrentiel pour un thread défini, il ne peut pas être modifié. Un appel à CoInitialize sur un appartement précédemment initialisé comme multithread échoue et retourne RPC_E_CHANGED_MODE.
CoInitializeEx fournit les mêmes fonctionnalités que CoInitialize et fournit également un paramètre pour spécifier explicitement le modèle d’accès concurrentiel du thread. CoInitialize appelle CoInitializeEx et spécifie le modèle d’accès concurrentiel en tant qu’appartement à thread unique. Les applications développées aujourd’hui doivent appeler CoInitializeEx plutôt que CoInitialize.
En règle générale, la bibliothèque COM n’est initialisée qu’une seule fois sur un thread. Les appels suivants à CoInitialize ou CoInitializeEx sur le même thread réussissent, tant qu’ils n’essaient pas de modifier le modèle d’accès concurrentiel, mais retournent S_FALSE. Pour fermer la bibliothèque COM correctement, chaque appel réussi à CoInitialize ou CoInitializeEx, y compris ceux qui retournent S_FALSE, doit être équilibré par un appel correspondant à CoUninitialize. Toutefois, le premier thread de l’application qui appelle CoInitialize avec 0 (ou CoInitializeEx avec COINIT_APARTMENTTHREADED) doit être le dernier thread à appeler CoUninitialize. Sinon, les appels ultérieurs à CoInitialize sur le sta échouent et l’application ne fonctionne pas.
Étant donné qu’il n’existe aucun moyen de contrôler l’ordre dans lequel les serveurs in-process sont chargés ou déchargés, n’appelez pas CoInitialize, CoInitializeEx ou CoUninitialize à partir de la fonction DllMain .
Spécifications
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 | objbase.h |
Bibliothèque | Ole32.lib |
DLL | Ole32.dll |
Ensemble d’API | ext-ms-win-com-sta-l1-1-0 (introduit dans Windows 10, version 10.0.20166) |