Partager via


structure BIND_OPTS2 (objidl.h)

Contient des paramètres utilisés pendant une opération de liaison de moniker.

Syntaxe

typedef struct tagBIND_OPTS2 {
  DWORD        cbStruct;
  DWORD        grfFlags;
  DWORD        grfMode;
  DWORD        dwTickCountDeadline;
  DWORD        dwTrackFlags;
  DWORD        dwClassContext;
  LCID         locale;
  COSERVERINFO *pServerInfo;
} BIND_OPTS2, *LPBIND_OPTS2;

Membres

cbStruct

Taille de cette structure, en octets.

grfFlags

Indicateurs qui contrôlent les aspects des opérations de liaison de moniker. Cette valeur est n’importe quelle combinaison des indicateurs de bits dans l’énumération BIND_FLAGS . La fonction CreateBindCtx initialise ce membre à zéro.

grfMode

Indicateurs devant être utilisés lors de l'ouverture du fichier qui contient l'objet identifié par le moniker. Les valeurs possibles sont les constantes STGM. L’opération de liaison utilise ces indicateurs dans l’appel à IPersistFile ::Load lors du chargement du fichier. Si l’objet est déjà en cours d’exécution, ces indicateurs sont ignorés par l’opération de liaison. La fonction CreateBindCtx initialise ce champ pour STGM_READWRITE.

dwTickCountDeadline

Heure d’horloge à laquelle l’appelant souhaite que l’opération de liaison soit terminée, en millisecondes. Ce membre permet à l’appelant de limiter le temps d’exécution d’une opération lorsque la vitesse est de première importance. La valeur zéro indique qu’il n’y a pas d’échéance. Les appelants utilisent le plus souvent cette fonctionnalité lors de l’appel de la méthode IMoniker ::GetTimeOfLastChange , même si elle peut également être utilement appliquée à d’autres opérations. La fonction CreateBindCtx initialise ce champ à zéro.

Les délais classiques permettent quelques centaines de millisecondes d’exécution. Cette échéance est une recommandation, pas une exigence ; toutefois, les opérations qui dépassent leur échéance d’une grande quantité peuvent entraîner des retards pour l’utilisateur final. Chaque implémentation de moniker doit essayer de terminer son opération à l’échéance ou échouer avec l’erreur MK_E_EXCEEDEDDEADLINE.

Si une opération de liaison dépasse son échéance parce qu’un ou plusieurs objets dont elle a besoin ne sont pas en cours d’exécution, l’implémentation du moniker doit inscrire les objets responsables dans le contexte de liaison à l’aide de IBindCtx ::RegisterObjectParam. Les objets doivent être inscrits sous les noms de paramètres « ExceededDeadline », « ExceededDeadline1 », « ExceededDeadline2 », etc. Si l’appelant trouve ultérieurement l’objet dans la table d’objets en cours d’exécution, l’appelant peut réessayer l’opération de liaison.

La fonction GetTickCount indique le nombre de millisecondes depuis le démarrage du système et retourne à zéro après 2^31 millisecondes. Par conséquent, les appelants doivent faire attention à ne pas passer par inadvertance une valeur zéro (ce qui indique aucune échéance), et les implémentations de moniker doivent être conscientes des problèmes d’habillage d’horloge.

dwTrackFlags

Un moniker peut utiliser cette valeur lors du suivi des liens. Si les données persistantes d’origine référencées par le moniker ont été déplacées, le moniker peut tenter de rétablir le lien en recherchant les données d’origine à l’aide d’un mécanisme approprié. Ce membre fournit des informations supplémentaires sur la façon dont le lien doit être résolu. Consultez la documentation du paramètre fFlags dans IShellLink ::Resolve.

L’implémentation de moniker de fichier COM utilise le mécanisme de liaison de l’interpréteur de commandes pour rétablir les liens et passe ces indicateurs à IShellLink ::Resolve.

dwClassContext

Contexte de classe, tiré de l’énumération CLSCTX , qui doit être utilisé pour instancier l’objet. Les monikers transmettent généralement cette valeur au paramètre dwClsContext de CoCreateInstance.

locale

Valeur LCID indiquant la préférence du client pour les paramètres régionaux à utiliser par l’objet auquel ils se lient. Un moniker transmet cette valeur à IClassActivator ::GetClassObject.

pServerInfo

Pointeur vers une structure COSERVERINFO . Ce membre permet aux clients appelant IMoniker ::BindToObject de spécifier les informations du serveur. Les clients peuvent passer une structure BIND_OPTS2 à la méthode IBindCtx ::SetBindOptions . Si un nom de serveur est spécifié dans la structure COSERVERINFO , la liaison moniker est transférée à l’ordinateur spécifié. SetBindOptions copie uniquement les membres struct de BIND_OPTS2, pas la structure COSERVERINFO et les pointeurs qu’elle contient. Les appelants ne peuvent libérer aucun de ces pointeurs tant que le contexte de liaison n’est pas libéré. Le nouveau moniker de classe COM n’honore pas actuellement l’indicateur pServerInfo .

Remarques

Une structure BIND_OPTS2 est stockée dans un contexte de liaison ; le même contexte de liaison est utilisé par chaque composant d’un moniker composite pendant la liaison, ce qui permet de passer les mêmes paramètres à tous les composants d’un moniker composite. Pour plus d’informations sur les contextes de liaison, consultez IBindCtx .

Les clients Moniker (utilisent un moniker pour acquérir un pointeur d’interface vers un objet) n’ont généralement pas besoin de spécifier des valeurs pour les membres de cette structure. La fonction CreateBindCtx crée un contexte de liaison avec les options de liaison définies sur des valeurs par défaut qui conviennent à la plupart des situations ; la fonction BindMoniker fait la même chose lors de la création d’un contexte de liaison à utiliser dans la liaison d’un moniker. Si vous souhaitez modifier les valeurs de ces options de liaison, vous pouvez le faire en passant une structure BIND_OPTS2 à la méthode IBindCtx ::SetBindOptions . Les implémenteurs Moniker peuvent passer une structure BIND_OPTS2 à la méthode IBindCtx ::GetBindOptions pour récupérer les valeurs de ces options de liaison.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 Build 20348
Serveur minimal pris en charge Windows 10 Build 20348
En-tête objidl.h

Voir aussi

BIND_OPTS3

CreateBindCtx

IBindCtx

IMoniker