BLOB-Zugriffsschnittstelle: ISPExternalBinaryProvider
Letzte Änderung: Donnerstag, 1. Oktober 2009
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Schnittstellendefinition (IDL)
Parameter für die StoreBinary-Methode
Parameter für die RetrieveBinary-Methode
Der externe BLOB-Speicher (Binary Large Object) – der EBS-Anbieter – ist in den SharePoint-Speicherzugriffsstapel von Microsoft SharePoint Foundation 2010 als COM-Komponente integriert. Die zentrale Komponente des EBS-Anbieters ist eine Schnittstelle, ISPExternalBinaryProvider, die Sie zum Erstellen eines benutzerdefinierten Anbieters implementieren müssen. Diese Schnittstelle weist die beiden Methoden StoreBinary und RetrieveBinary auf, die Sie implementieren, um binäre Daten im externen BLOB-Speicher zu speichern und aus diesem abzurufen.
Schnittstellendefinition (IDL)
Ihre SharePoint-Anwendung enthält eine gemeinsame, statusfreie Instanz der ISPExternalBinaryProvider-Klasse. Diese beständige Instanz wird aufgerufen, wenn Sie BLOB-Daten im externen BLOB-Speicher speichern oder aus diesem abrufen möchten.
Die IDL-Schnittstellendatei (extstore.idl) enthält Folgendes:
/*************************************************
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);
}
}
Parameter für die StoreBinary-Methode
Es folgen Beschreibungen für die Parameter der StoreBinary-Methode.
[in] unsigned long cbPartitionId
Die Größe des Bytearrays, das an den pbPartitionId -Parameter übergeben wird. In SharePoint Foundation wird stets 16 für diesen Wert festgelegt, was der Größe einer GUID entspricht.
[in, size_is(cbPartitionId)] const byte* pbPartitionId
Der Bezeichner der Website, zu der die Binärdatei gehört. Der EBS-Anbieter kann damit den BlobId-Parameter logischen Auflistungen im externen BLOB-Speicher zuordnen.
[in] ILockBytes* pilb
Ein Zeiger auf die BLOB-Daten als ILockBytes-Instanz. Important: Der Anbieter darf keinen Verweis auf das ILockBytes*-Objekt enthalten, nachdem HRESULT zurückgegeben wurde.
[out] unsigned long* pcbBinaryId
Die Anzahl von Bytes in der BLOB-ID.
[out, size_is(, *pcbBinaryId)] byte** ppbBinaryId
Der Out-Parameter des EBS-Anbieters, nachdem der BLOB im externen BLOB-Speicher gespeichert wurde. Der EBS-Anbieter kann diese ID für den externen BLOB-Speicher bereitstellen, oder der BLOB-Speicher kann einen EBS-Anbieter zurückgeben. Von SharePoint Foundation wird nicht festgelegt, welche Methode verwendet werden soll. Es wird jedoch empfohlen, eine Methode auszuwählen, die an zukünftige Versionen des EBS-Anbieters angepasst werden kann.
Dieser Parameter sollte mithilfe von CoTaskMemAlloc zugeordnet werden.
[out,optional] VARIANT_BOOL* pfAccepted
Ein boolescher Parameter. FALSE weist SharePoint Foundation an, die BLOB-Datei inline zu speichern. Unter bestimmten Umständen, z. B. wenn SharePoint Foundation den ESB-Anbieter nicht unterstützen kann, von dem ein BLOB abgelehnt wird (d. h., wenn eine Datei für eine Linkkorrektur oder eine Virenüberprüfung aktualisiert wird), übergibt SharePoint Foundation einen NULL-Zeiger. In diesem Fall muss der EBS-Anbieter entweder die Datei speichern oder ein fehlerhaftes HRESULT zurückgeben.
Parameter für die RetrieveBinary-Methode
Es folgen Beschreibungen für die Parameter der RetrieveBinary-Methode. Beachten Sie, dass die Parameter selbst identisch wie bei der StoreBinary-Methode sind.
[in] unsigned long cbPartitionId
Die Größe des Bytearrays, das an den pbPartitionId-Parameter übergeben wird. In SharePoint Foundation wird stets 16 für diesen Wert festgelegt, was der Größe einer GUID entspricht.[in, size_is(cbPartitionId)] const byte* pbPartitionId
Der Bezeichner der Website, zu der die Binärdatei gehört. Der EBS-Anbieter kann damit den BLOB-ID-Parameter logischen Auflistungen im externen BLOB-Speicher zuordnen.[in] unsigned long cbBinaryId
Die Anzahl von Bytes in der BLOB-ID.[in, size_is(cbBinaryId)] const byte* pbBinaryId
Der Bezeichner, der an den EBS-Anbieter übergeben wird, um den BLOB im externen BLOB-Speicher aufzufinden.[out] ILockBytes** ppilb
Ein Zeiger auf die BLOB-Daten als ILockBytes-Instanz.
Rückgabewerte für "StoreBinary"
Es folgen die Rückgabewerte und deren Beschreibungen, wenn Sie die ISPExternalBinaryProvider:StoreBinary-Methode verwenden.
S_OK |
Die Methode wurde erfolgreich ausgeführt. Falls *pfAccepted von SharePoint Foundation mit einer Adresse ungleich NULL übergeben wurde, wird die Datei in SQL Server gespeichert, wenn *pfAccepted dem Wert VARIANT_FALSE entspricht. Andernfalls speichert SharePoint Foundation den Wert in ppbBinaryId und es wird festgehalten, dass der BLOB extern gespeichert wurde. |
E_FAIL |
SharePoint Foundation informiert den Benutzer, dass die Datei nicht gespeichert wurde. Darüber hinaus werden von SharePoint Foundation keine Out-Parameter geändert. (Es wird davon ausgegangen, dass der EBS-Anbieter CoTaskMemFree aufgerufen hat, falls CoTaskMemAlloc aufgerufen wurde). |
SharePoint Foundation protokolliert unerwartete HRESULT-Rückgabewerte und reagiert entsprechend auf erfolgreiche und fehlerhafte HRESULT-Werte.
Rückgabewerte für "RetrieveBinary"
Es folgen die Rückgabewerte und deren Beschreibungen, wenn Sie die ISPExternalBinaryProvider:RetrieveBinary-Methode verwenden.
S_OK |
Die Methode wurde erfolgreich ausgeführt. SharePoint Foundation liest den Dateiinhalt aus dem *ppilb-Parameter und gibt ihn dann frei. |
E_FAIL |
Bei der Ausführung der Methode wurde ein Fehler gemeldet. SharePoint Foundation informiert den Benutzer, dass die Datei nicht abgerufen werden konnte. Der Wert im *ppilb-Parameter wird von SharePoint Foundation nicht geändert. |
Der Anbieter gibt eine ILockBytes-Schnittstelle an den Speicherzugriffsstapel zurück.
Wie bei der StoreBinary-Methode ist der EBS-Anbieter für das Protokollieren von Abrufereignissen verantwortlich. Windows SharePoint Services protokolliert unerwartete HRESULT-Rückgabewerte, verhält sich aber ansonsten so, als ob S_OK oder E_FAIL zurückgegeben würde.
Siehe auch
Konzepte
Externer Speicher für BLOBs (Binary Large Objects) in SharePoint Foundation