Cette documentation est archivée et n’est pas conservée.

Interface d'accès aux objets BLOB : ISPExternalBinaryProvider

Windows SharePoint Services 3

Le magasin de données BLOB (Binary Large Object), le fournisseur EBS, est intégré à la pile d'accès au stockage SharePoint de Windows SharePoint Services 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 . Windows SharePoint 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 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.

[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. Windows SharePoint Services ne spécifie pas l'approche à utiliser. Toutefois, il est recommandé d'opter pour une approche adaptable aux versions futures du fournisseur EBS.

[out,optional] VARIANT_BOOL* pfAccepted

Paramètre booléen. FALSE indique à Windows SharePoint Services que le fichier BLOB doit être stocké en ligne. Dans certaines circonstances, comme lorsque Windows SharePoint Services 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), Windows SharePoint Services 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. Windows SharePoint 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 Windows Sharepoint Services 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, Windows SharePoint Services stocke la valeur dans ppbBinaryId et consigne le fait que l'objet BLOB a été stocké de manière externe.

E_FAIL

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

Windows SharePoint Services 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.

Windows SharePoint Services 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é.

Windows SharePoint Services indique à l'utilisateur que le fichier n'a pas pu être récupéré. Windows SharePoint Services 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

Afficher: