Partager via


Interface d'accès aux objets BLOB : ISPExternalBinaryProvider

Dernière modification : jeudi 1 octobre 2009

S’applique à : SharePoint Foundation 2010

Dans cet article
Définition d'interface (IDL)
Paramètres de la méthode StoreBinary
Paramètres de la méthode RetrieveBinary

Le magasin de données BLOB (Binary Large Object), le fournisseur EBS, est intégré à la pile d'accès au stockage Microsoft SharePoint Foundation 2010 en tant que composant COM. Le cœur du fournisseur EBS est une interface, ISPExternalBinaryProvider, que vous devez implémenter pour écrire votre fournisseur personnalisé. L'interface possède deux méthodes, StoreBinary et RetrieveBinary, que vous implémentez pour stocker des données binaires dans le magasin de données BLOB externe et pour en extraire de celui-ci.

Définition d'interface (IDL)

Votre application SharePoint détient une instance courante, sans état de la classe ISPExternalBinaryProvider. Cette instance persistante est appelée lorsque vous souhaitez stocker des données BLOB dans le magasin de données BLOB externe ou en extraire de celui-ci.

Le contenu du fichier IDL d'interface (extstore.idl) est le suivant :

/*************************************************
    File: extstore.idl
    Copyright (c): 2006 Microsoft Corp.
*************************************************/
import "objidl.idl";

[
    uuid(39082a0c-af6e-4ac2-b6f0-1a1ff6abbae1)
]

library SharePointBinaryStore
{
    [
        local,
        object,
        uuid(48036587-c8bc-4aa0-8694-5a7000b4ba4f),
        helpstring("ISPExternalBinaryProvider interface")
    ]
    interface ISPExternalBinaryProvider : IUnknown
    {
        HRESULT StoreBinary(
            [in] unsigned long cbPartitionId,
            [in, size_is(cbPartitionId)] const byte* pbPartitionId,
            [in] ILockBytes* pilb,
            [out] unsigned long* pcbBinaryId,
            [out, size_is(, *pcbBinaryId)] byte** ppbBinaryId,
            [out,optional] VARIANT_BOOL* pfAccepted);

        HRESULT RetrieveBinary(
            [in] unsigned long cbPartitionId,
            [in, size_is(cbPartitionId)] const byte* pbPartitionId,
            [in] unsigned long cbBinaryId,
            [in, size_is(cbBinaryId)] const byte* pbBinaryId,
            [out] ILockBytes** ppilb);
    }
}

Paramètres de la méthode StoreBinary

Les informations ci-après décrivent les paramètres de la méthode StoreBinary.

[in] unsigned long cbPartitionId

Taille du tableau d'octets passé au paramètre pbPartitionId . SharePoint Foundation spécifie toujours cette valeur comme étant 16, ce qui représente la taille d'un GUID.

[in, size_is(cbPartitionId)] const byte* pbPartitionId

Identificateur du site auquel appartient le fichier binaire. Le fournisseur EBS peut l'utiliser pour mapper le paramètre BlobId sur des collections logiques dans le magasin de données BLOB externe.

[in] ILockBytes* pilb

Pointeur vers les données BLOB en tant qu'instance ILockBytes. Important : le fournisseur ne doit pas contenir une référence à l'objet ILockBytes* après avoir retourné HRESULT.

[out] unsigned long* pcbBinaryId

Nombre d'octets dans l'ID de l'objet BLOB.

[out, size_is(, *pcbBinaryId)] byte** ppbBinaryId

Paramètre de sortie du fournisseur EBS une fois l'objet BLOB stocké dans le magasin de données BLOB externe. Le fournisseur EBS peut fournir cet ID au magasin de données BLOB externe, ou celui-ci peut retourner un fournisseur EBS. SharePoint Foundation ne spécifie pas l'approche à utiliser. Toutefois, il est recommandé d'opter pour une approche adaptable aux versions futures du fournisseur EBS.

Ce paramètre doit être affecté à l'aide de CoTaskMemAlloc.

[out,optional] VARIANT_BOOL* pfAccepted

Paramètre booléen. FALSE indique àSharePoint Foundation que le fichier BLOB doit être stocké en ligne. Dans certaines circonstances, comme lorsque SharePoint Foundation ne peut pas prendre en charge le rejet d'un objet BLOB par le fournisseur EBS (autrement dit, lorsqu'un fichier est mis à jour dans le cadre d'une réparation de lien ou d'une analyse antivirus), SharePoint Foundation passe un pointeur NULL. Lorsque cela se produit, le fournisseur EBS doit stocker le fichier ou retourner un événement HRESULT d'échec.

Paramètres de la méthode RetrieveBinary

Les informations ci-après décrivent les paramètres de la méthode RetrieveBinary. Notez que les paramètres proprement dits sont les mêmes que pour la méthode StoreBinary.

  • [in] unsigned long cbPartitionId
    Taille du tableau d'octets passé pbPartitionId. SharePoint Foundation Services spécifie toujours cette valeur comme étant 16, ce qui représente la taille d'un GUID.

  • [in, size_is(cbPartitionId)] const byte* pbPartitionId
    Identificateur du site auquel appartient le fichier binaire. Le fournisseur EBS peut l'utiliser pour mapper l'ID de l'objet BLOB sur des collections logiques dans le magasin de données BLOB externe.

  • [in] unsigned long cbBinaryId
    Nombre d'octets dans l'ID de l'objet BLOB.

  • [in, size_is(cbBinaryId)] const byte* pbBinaryId
    Identificateur passé au fournisseur EBS pour localiser l'objet BLOB dans le magasin de données BLOB externe.

  • [out] ILockBytes** ppilb
    Pointeur vers les données BLOB en tant qu'instance ILockBytes.

Valeurs de retour de StoreBinary

Les informations ci-après indiquent les valeurs de retour liées à l'utilisation de la méthode ISPExternalBinaryProvider:StoreBinary, ainsi que leur signification.

S_OK

La méthode s'est exécutée correctement.

Si SharePoint Foundation a passé *pfAccepted avec une adresse non NULL, le fichier est stocké dans SQL Server dans les cas où *pfAccepted a pour valeur VARIANT_FALSE. Sinon, SharePoint Foundation stocke la valeur dans ppbBinaryId et consigne le fait que l'objet BLOB a été stocké de manière externe.

E_FAIL

SharePoint Foundation indique à l'utilisateur que le fichier n'a pas été stocké ; en outre, SharePoint Foundation ne modifie aucun paramètre de sortie. (Le fournisseur EBS est supposé avoir appelé CoTaskMemFree si CoTaskMemAlloc a été appelé.)

SharePoint Foundation consigne des retours HRESULT inattendus et réagit de manière appropriée pour les retours HRESULT, qu'ils traduisent une réussite ou un échec.

Valeurs de retour de RetrieveBinary

Les informations ci-après indiquent les valeurs de retour liées à l'utilisation de la méthode ISPExternalBinaryProvider:RetrieveBinary, ainsi que leur signification.

S_OK

La méthode s'est exécutée correctement.

SharePoint Foundation lit le contenu du fichier à partir du paramètre *ppilb, puis le libère.

E_FAIL

L'exécution de la méthode a échoué.

SharePoint Foundation indique à l'utilisateur que le fichier n'a pas pu être récupéré. SharePoint Foundation ne modifie pas la valeur figurant dans le paramètre *ppilb.

Le fournisseur renvoie une interface ILockBytes à la pile d'accès au stockage.

Comme dans le cas de la méthode StoreBinary, le fournisseur EBS est responsable de la journalisation des événements de récupération. Windows SharePoint Services enregistre les retours HRESULT inattendus, mais se comporte sinon comme si les retours étaient simplement S_OK ou E_FAIL.

Voir aussi

Concepts

Stockage externe des objets BLOB (Binary Large Objects) dans SharePoint Foundation