Verwalten von Gruppendatensätzen
Ein Gruppendatensatz sind spezifische Daten, die für alle aktiven Mitglieder einer Peergruppe veröffentlicht werden, z. B. eine Chatnachricht oder ein anwendungsspezifisches status Update. Ein Datensatz wird durch die PEER_RECORD-Struktur dargestellt und enthält die folgenden Informationen zu einem Peer:
- Die Datensatz-ID ist ein Wert, der einen Datensatz in der Peergruppe eindeutig identifiziert.
- Eine GUID, die den Datensatztyp angibt. Anwendungen können verschiedene Datensatztypen unterstützen. Eine Anwendung interpretiert das Datenfeld eines Datensatzes basierend auf dem Datensatztyp. Einige GUIDs sind reserviert, und der API-Aufruf gibt PEER_E_NOT_AUTHORIZED zurück, wenn die Anwendung versucht, sie zu verwenden.
- Eine Reihe von Datensatzattributen, die als XML-Zeichenfolge beschrieben werden. Die Attribute werden beim Durchsuchen von Datensätzen verwendet. Weitere Informationen zu Attributen finden Sie unter Datensatzattributeschema.
- Die Peerzeit, zu der ein Datensatz erstellt wird.
- Die Peerzeit, zu der ein Datensatz abläuft.
- Die Peerzeit, zu der ein Datensatz geändert wird.
- Der Ersteller eines Datensatzes.
- Das Mitglied, das einen Datensatz ändert.
- Eine PEER_DATA-Struktur , die die kryptografische Signatur für alle Felder in dieser PEER_RECORD-Struktur enthält. Dieses Feld kann nicht direkt von einem Peer aktualisiert oder geändert werden.
- Eine PEER_DATA-Struktur , die die anwendungsspezifischen Daten enthält, die diesem Datensatz als Array von Bytes zugeordnet sind. Der Typ der in diesem Feld vorhandenen Daten wird durch den anwendungsdefinierte Datensatztyp bestimmt.
Abrufen von Peergruppendatensätzen
Einzelne Datensätze werden abgerufen, indem PeerGroupGetRecord mit der ID des Datensatzes aufgerufen wird. Beim Verarbeiten aller Datensätze eines bestimmten Typs wird der aufgezählte Satz aller aktuellen Peergruppendatensätze abgerufen, indem zuerst PeerGroupEnumRecords aufgerufen wird, um die Enumeration zu öffnen, und dann iterativ PeerGetNextItem aufgerufen wird, bis alle Datensätze abgerufen werden. Schließen Sie die Enumeration, und lassen Sie den ihr zugeordneten Arbeitsspeicher durch Aufrufen von PeerEndEnumeration frei.
Wenn ein Datensatz von einem Peer erstellt, gelöscht oder aktualisiert wird, wird der betroffene Datensatz über das PEER_GROUP_EVENT_RECORD_CHANGE-Ereignis für alle Mitglieder der Peergruppe veröffentlicht. Beachten Sie, dass ein Peer, wenn er nicht mit der Gruppe verbunden ist, den aktualisierten Datensatz empfängt, wenn er das nächste Mal eine Verbindung herstellt. Es ist wichtig, sich für dieses Ereignis bei PeerGroupRegisterEvent zu registrieren, wenn Ihre Anwendung Datensätze sinnvoll verwaltet oder verwaltet. Alternativ kann die Anwendung die Datensatzdatenbank bei Bedarf mithilfe von PeerGroupSearchRecords abfragen.
Wenn das PEER_GROUP_EVENT_RECORD_CHANGE-Ereignis ausgelöst wird, werden die spezifische Datensatz-ID und der typ sowie der Typ der Änderung (hinzufügen, aktualisieren, löschen) als PEER_EVENT_RECORD_CHANGE_DATA-Struktur empfangen. Diese Struktur wird mit einem Aufruf von PeerGroupGetEventData abgerufen. Wenn es sich bei der Änderung um ein Add oder Update handelt, sollten Sie PeerGroupGetRecord verwenden, um den Datensatz mit der angegebenen ID abzurufen. Die lokale Datensatzdatenbank für die Infrastruktur wird automatisch aktualisiert.
Sie können auch nach bestimmten Datensätzen suchen, die auf bestimmten benutzerdefinierten Attributen basieren, die im PwzAttributes-Feld von PEER_RECORD bereitgestellt werden, sowie nach vordefinierten Attributen. Verwenden Sie dazu die PeerGroupSearchRecords-Funktion mit einer XML-Suchabfrage, die wie im Thema Datensatzsuchabfrageformat angegeben formatiert ist.
Weitere Informationen zum Arbeiten mit Datensätzen in der Peerinfrastruktur finden Sie im Thema Datensätze unter Verwenden der Peerinfrastruktur.
Verwaltung von Peergruppendatensätzen
Wenn die ersten Einladungen vom Ersteller der Peergruppe ausgegeben werden, kann angegeben werden, dass bestimmte Mitglieder in einer Administratorrolle (PEER_GROUP_ROLE_ADMIN) fungieren, wenn sie dem Benutzer neue Anmeldeinformationen ausgibt (entweder über PeerGroupCreateInvitation oder PeerGroupIssueCredentials). Ein Administrator hat die Möglichkeit, alle Peergruppendatensätze direkt hinzuzufügen, zu löschen und zu aktualisieren. Umgekehrt kann ein Peergruppenmitglied, dessen Rolle entweder auf PEER_GROUP_ROLE_MEMBER oder PEER_GROUP_ROLE_INVITING_MEMBER festgelegt ist, nur eigene Datensätze hinzufügen, aktualisieren und löschen.
Der Ersteller hat standardmäßig die Administratorrolle.
Um einen Datensatz zu aktualisieren, rufen Sie den Datensatz mit PeerGroupGetRecord oder PeerGroupEnumRecords ab, nehmen Sie die Änderungen vor, und übergeben Sie den aktualisierten Datensatz an PeerGroupUpdateRecord.
Um einen Datensatz zu löschen, übergeben Sie die zu löschende Datensatz-ID an PeerGroupDeleteRecord.
Um einen Datensatz hinzuzufügen, erstellen Sie eine neue PEER_RECORD-Struktur , und füllen Sie die folgenden Felder auf:
- dwSize. Dieses Feld enthält den Wert von sizeof(PEER_RECORD).
- ftExpiration. Dieses Feld enthält das Ablaufdatum und die Uhrzeit dieses Datensatzes, ausgedrückt in Peerzeit als FILETIME-Struktur .
- geben Sie ein. Dieses Feld enthält einen GUID-Wert , der den Datensatztyp für die Anwendung identifiziert. Wenn dieser Typ für Ihre Anwendungsinfrastruktur angepasst ist, sollten Sie auch das Datenfeld auffüllen.
Die folgenden Felder werden von der Infrastruktur aufgefüllt und ignoriert, wenn sie von der Anwendung festgelegt werden:
- ID
- pwzCreatorId
- pwzLastModifiedById
- ftCreation
- ftLastModified
- securityData
Die verbleibenden Felder sind optional. Um diesen neuen Datensatz der Peergruppe hinzuzufügen, übergeben Sie ihn an PeerGroupAddRecord.
Importieren und Exportieren von Datensätzen
Peer-to-Peer-Gruppendatensätze werden lokal als Datenbank verwaltet. Um eine aktuelle Momentaufnahme der Peergruppendatensatzdatenbank in einer lokalen Datei zu speichern, rufen Sie PeerGroupExportDatabase auf, und übergeben Sie es an die Peergruppe. Diese Datei kann dann an einen anderen Computer oder eine andere Anwendung übertragen werden, die diese Datensatzdatenbank extrahieren und verwenden kann, indem PeerGroupImportDatabase aufgerufen wird.