Méthode IMoniker ::Reduce (objidl.h)
Réduit un moniker à sa forme la plus simple.
Syntaxe
HRESULT Reduce(
[in] IBindCtx *pbc,
[in] DWORD dwReduceHowFar,
[in, out] IMoniker **ppmkToLeft,
[out] IMoniker **ppmkReduced
);
Paramètres
[in] pbc
Pointeur vers l’interface IBindCtx sur le contexte de liaison à utiliser dans cette opération de liaison. Le contexte de liaison met en cache les objets liés pendant le processus de liaison, contient des paramètres qui s’appliquent à toutes les opérations utilisant le contexte de liaison et fournit les moyens par lesquels l’implémentation du moniker doit récupérer des informations sur son environnement.
[in] dwReduceHowFar
Spécifie le niveau de réduction souhaité pour ce moniker. Ce paramètre doit être l’une des valeurs de l’énumération MKRREDUCE .
[in, out] ppmkToLeft
Lors de l’entrée, pointeur vers une variable pointeur IMoniker qui contient le pointeur d’interface vers moniker à gauche de ce moniker. Ce paramètre est principalement utilisé par les implémenteurs moniker pour permettre la coopération entre les différents composants d’un moniker composite ; Les clients moniker peuvent généralement passer null.
Au retour, *ppmkToLeft est généralement défini sur NULL, ce qui n’indique aucune modification du moniker d’origine à gauche. Dans de rares cas, *ppmkToLeft indique un moniker, indiquant que le moniker précédent à gauche doit être ignoré et que le moniker retourné via *ppmkToLeft est le remplacement. Dans une telle situation, l’implémentation doit appeler Release sur l’ancien moniker à gauche de ce moniker et doit appeler AddRef sur le nouveau moniker retourné ; l’appelant doit le libérer ultérieurement. Si une erreur se produit, l’implémentation peut laisser le pointeur d’interface inchangé ou le définir sur NULL.
[out] ppmkReduced
Pointeur vers une variable pointeur IMoniker qui reçoit le pointeur d’interface vers la forme réduite de ce moniker, qui peut être NULL si une erreur se produit ou si ce moniker est réduit à rien. Si ce moniker ne peut pas être réduit, *ppmkReduced est simplement défini sur ce moniker et la valeur de retour est MK_S_REDUCED_TO_SELF. Si *ppmkReduced n’a pas la valeur NULL, l’implémentation doit appeler AddRef sur le nouveau moniker ; il incombe à l’appelant d’appeler Release. (Cela est vrai même si *ppmkReduced est défini sur ce moniker.)
Valeur retournée
Cette méthode peut retourner les valeurs de retour standard E_OUTOFMEMORY et E_UNEXPECTED, ainsi que les valeurs suivantes.
Code de retour | Description |
---|---|
|
La commande s'est correctement terminée. |
|
Ce moniker n’a pas pu être réduit davantage, donc ppmkReduced indique ce moniker. |
|
L’opération n’a pas pu être effectuée dans le délai spécifié par la structure BIND_OPTS du contexte de liaison. |
Remarques
Cette méthode est destinée aux utilisations suivantes :
- Activez la construction de macros ou d’alias définis par l’utilisateur en tant que nouveaux types de classes moniker. Lorsqu’il est réduit, le moniker auquel la macro est évaluée est retourné.
- Activez la construction d’un type de moniker qui suit les données à mesure qu’elles se déplacent. Lorsqu’il est réduit, le moniker des données à leur emplacement actuel est retourné.
- Sur les systèmes de fichiers qui prennent en charge une méthode basée sur un identificateur pour accéder aux fichiers indépendamment des noms de fichiers ; un moniker de fichier peut être réduit à un moniker qui contient l’un de ces identificateurs.
Remarques aux appelants
Les scénarios décrits ci-dessus ne sont actuellement pas implémentés par les classes moniker fournies par le système.Vous devez appeler Reduce avant de comparer deux monikers à l’aide de la méthode IMoniker ::IsEqual , car un moniker réduit se présente sous sa forme la plus spécifique. IsEqual peut retourner S_FALSE sur deux monikers avant qu’ils ne soient réduits et S_OK après avoir été réduits.
Remarques aux implémenteurs
Si le moniker actuel peut être réduit, votre implémentation ne doit pas réduire le moniker sur place. Au lieu de cela, il doit retourner un nouveau moniker qui représente l’état réduit de l’actuel. De cette façon, l’appelant a toujours la possibilité d’utiliser le moniker non induit (par exemple, énumérer ses composants). Votre implémentation doit réduire le moniker au moins autant que nécessaire.Notes spécifiques à l’implémentation
Implémentation | Notes |
---|---|
Anti-moniker | Cette méthode retourne MK_S_REDUCED_TO_SELF et repasse le même moniker. |
Moniker de classe | Cette méthode retourne MK_S_REDUCED_TO_SELF et repasse le même moniker. |
Moniker de fichier | Cette méthode retourne MK_S_REDUCED_TO_SELF et repasse le même moniker. |
Moniker composite générique | Cette méthode appelle de manière récursive Reduce pour chacun de ses monikers de composant. Si l’un des composants se réduit, la méthode retourne S_OK et repasse un composite des composants réduits. Si aucune réduction n’a eu lieu, la méthode repasse le même moniker et retourne MK_S_REDUCED_TO_SELF. |
Moniker d’élément | Cette méthode retourne MK_S_REDUCED_TO_SELF et repasse le même moniker. |
MONIKER OBJREF | Cette méthode retourne MK_S_REDUCED_TO_SELF et repasse le même moniker. |
Moniker de pointeur | Cette méthode retourne MK_S_REDUCED_TO_SELF et repasse le même moniker. |
Moniker d’URL | Cette méthode retourne MK_S_REDUCED_TO_SELF et repasse le même moniker. |
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 | objidl.h |