Partager via


Méthode IWiaItem2::GetExtension

Obtient les interfaces d’extension qui peuvent être fournies avec un pilote de périphérique d’acquisition d’images Windows (WIA) 2.0.

Syntaxe

HRESULT GetExtension(
  [in]  LONG   lFlags,
  [in]  BSTR   bstrName,
  [in]  REFIID riidExtensionInterface,
  [out] VOID   **ppOut
);

Paramètres

lFlags [in]

Type : LONG

Actuellement inutilisé. Doit être défini sur zéro (0).

bstrName [in]

Type : BSTR

Spécifie le nom de l’extension vers laquelle l’application appelante nécessite un pointeur.

SegmentationFilter

Extension de filtre de segmentation. Il s’agit actuellement de la seule valeur valide pour ce paramètre.

riidExtensionInterface [in]

Type : REFIID

Spécifie l’identificateur de l’interface d’extension.

ppOut [out]

Type : VOID**

Reçoit l’adresse d’un pointeur vers l’interface d’extension.

Valeur retournée

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, il retourne un code d’erreur HRESULT .

Notes

Une application appelle cette méthode pour créer un objet d’extension implémentant l’une des interfaces d’extension de pilote WIA 2.0. IWiaItem2::GetExtension stocke l’adresse de l’interface d’extension de l’objet d’extension dans le paramètre riidExtensionInterface . L’application utilise ensuite le pointeur d’interface pour appeler ses méthodes.

Les applications doivent appeler la méthode IUnknown::Release sur les pointeurs d’interface qu’elles reçoivent via le paramètre riidExtensionInterface .

Exemples

CreateSegmentationFilter crée une instance du filtre de segmentation du pilote (IWiaSegmentationFilter) en appelant IWiaItem2::GetExtension sur l’interface IWiaItem2 transmise.

HRESULT
CreateSegmentationFilter(
   IWiaItem2               *pWiaItem2,
   IWiaSegmentationFilter  **ppSegmentationFilter)
{
   HRESULT                 hr         = S_OK;
   IWiaSegmentationFilter *pSegFilter = NULL;
    
   if (!pWiaItem2 || !ppSegmentationFilter)
   {
      hr = E_INVALIDARG;
   }

   if (SUCCEEDED(hr))
   {
      BSTR    bstrFilterString = SysAllocString(WIA_SEGMENTATION_FILTER_STR);

      if (bstrFilterString)
      {
         hr = pWiaItem2->GetExtension(0,
                                      bstrFilterString,
                                      IID_IWiaSegmentationFilter,
                                      (void**)&pSegFilter);
         SysFreeString(bstrFilterString);
         bstrFilterString = NULL;
      }
      else
      {
         hr = E_OUTOFMEMORY;
      }
   }

   if (SUCCEEDED(hr))
   {
     *ppSegmentationFilter = pSegFilter;
      pSegFilter = NULL;
   }
   return hr;
}

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2008 [applications de bureau uniquement]
En-tête
Wia.h
IDL
Wia.idl