Freigeben über


PNRP und WSASetService

PNRP verwendet die WSASetService--Funktion, um Peernamenzu registrieren oder zu entfernen.

Registrieren eines Namens

Die Registrierung umfasst einen Peernamen und einen Satz von Endpunkten, an denen ein Dienst kontaktiert werden kann. Eine Registrierung ist spezifisch für eine PNRP-Cloud. Nachdem ein Peer registriert wurde, gibt es eine Verzögerung zwischen der Registrierung und der Weitergabe der Registrierungsinformationen an andere Knoten. Während dieser Zeit können andere Knoten möglicherweise keinen neu registrierten Peer auflösen.

Die Dienstregistrierung ist nicht dauerhaft.

  • Wenn ein Clientprozess, der einen Peernamen registriert, beendet oder aufruft WSACleanup, wird die Registrierung des Peernamens aufgehoben.
  • Wenn ein angegebener Peername bereits in derselben Cloud durch den aktuellen Prozess registriert ist, wird er durch neue Registrierungswerte ersetzt.

Beim Registrieren eines Peernamens müssen die folgenden Parameterwerte angegeben werden:

  • essOperation Parameter muss den Wert RNRSERVICE_REGISTERhaben.
  • dwControlFlags Parameter muss null (0) sein.

Beim Registrieren eines Peernamens muss die LPWSAQUERYSET- Struktur, auf die vom parameter lpqsRegInfo verwiesen wird, die folgenden Werte enthalten:

dwSize-

Gibt die Größe dieser Struktur an.

lpszServiceInstanceName

Gibt einen zu registrierenden Peernamen an. Wenn der Peername ungesichert ist, ist die Identität optional. Wenn die Identität als NULL-angegeben wird, verwendet PNRP standardmäßig die lokale Computeridentität.

lpServiceClassID-

Muss SVCID_PNRPNAME sein.

lpVersion-

Ignoriert. Wird auf NULL-festgelegt.

lpszComment

Ignoriert. Die Zeichenfolge ist jedoch immer noch für weniger als 40 Zeichen erforderlich, einschließlich des NULL Endator.

dwNameSpace-

Muss entweder NS_PNRPNAME oder NS_ALLsein.

lpNSProviderID-

Muss entweder NS_PROVIDER_PNRPNAME oder NULL-sein.

lpszContext

Muss ein Cloudname, eine leere Zeichenfolge oder NULL-sein. Wenn dieser Wert NULL- oder eine leere Zeichenfolge ist, wird die Standardcloud "Global" verwendet. Andernfalls muss er auf einen gültigen Cloudnamen verweisen.

dwNumberOfProtocols

Ignoriert. Auf Null (0) festgelegt.

lpszQueryString-

Ignoriert. Wird auf NULL-festgelegt.

dwNumberOfCsAddrs

Gibt die Anzahl der Adressen an, die von einem Dienst registriert wurden. Die maximale Anzahl von Adressen, die für einen einzelnen Namen registriert werden können, beträgt 10.

lpcsaBuffer

Zeigen Sie auf eine Liste der zu registrierenden Adressen.

dwOutputFlags-

Ignoriert. Auf Null (0) festgelegt.

lpBlob

Zeigen Sie auf eine BLOB--Struktur, die auf eine PNRPINFO--Struktur verweist. Bestimmte Parameter in der PNRPINFO Struktur müssen festgelegt werden. Weitere Informationen finden Sie im folgenden PNRPINFO Strukturabschnitt.

PNRPINFO-Struktur

Wenn das lpBlob Mitglied der LPWSAQUERYSET- Struktur festgelegt ist, müssen die folgenden Elemente der PNRPINFO--Struktur festgelegt werden:

dwSize-

Gibt die Größe dieser Struktur an.

lpwszIdentity-

Gibt die Identität des Peernamens an, der mit PeerIdentityCreateerstellt wird. Wenn ein Peername nicht gesichert ist, ist die Identität optional. Wenn die Identität als NULL-angegeben wird, verwendet PNRP standardmäßig die lokale Computeridentität.

nMaxResolve

Ignoriert. Auf Null (0) festgelegt.

dwTimeout-

Ignoriert. Auf Null (0) festgelegt.

dwLifetime

Gibt die Anzahl der Sekunden zwischen Aktualisierungsvorgängen an.

enResolveCriteria

Ignoriert. Auf Null (0) festgelegt.

dwFlags-

Muss entweder Null (0) oder PNRPINFO_HINTsein. Der Standardwert ist Null (0). Dies bedeutet, dass der Dienststandortteil der PNRP-ID mithilfe der IP-Adresse in saHinterstellt wird. Andernfalls wird der Dienstspeicherort mithilfe der ersten IP-Adresse im ersten IPv6-Eintrag des lpcsaBuffer Member erstellt.

saHint

Gibt die IPv6-Adresse für den Hinweis an.

enNameState-

Ignoriert. Auf Null (0) festgelegt.

Aufheben der Registrierung eines Peernamens

In der folgenden Liste sind die wichtigen Informationen zum Aufheben der Registrierung eines Peernamens aufgeführt.

  • Nur eine Anwendung, die einen Peernamen registriert, kann die Registrierung aufheben.
  • Die Registrierung eines Peernamens wird automatisch aufgehoben, wenn WSACleanup- aufgerufen wird.
  • PNRP entfernt immer die gesamte Dienstnamenregistrierung. Das Entfernen einzelner Adressen ist nicht zulässig.
  • Beim Aufheben der Registrierung eines Namens muss der parameter essOperation einen Wert von RNRSERVICE_DELETEaufweisen.
  • PNRP unterstützt den Wert RNRSERVICE_DEREGISTERnicht.
  • Der dwControlFlags Parameter muss null (0) sein.

Beim Aufheben der Registrierung eines Namens muss die LPWSAQUERYSET- Struktur, auf die die lpqsRegInfo Parameterverweise folgende Werte enthalten muss:

dwSize-

Gibt die Größe dieser Struktur an.

lpszServiceInstanceName

Gibt einen Peernamen an, um die Registrierung aufzuheben.

lpServiceClassID-

Muss SVCID_PNRPNAMEsein.

lpVersion-

Ignoriert. Wird auf NULL-festgelegt.

lpszComment

Ignoriert. Wird auf NULL-festgelegt.

dwNameSpace-

Muss entweder NS_PNRPNAME oder NS_ALLsein.

lpNSProviderID-

Muss entweder NS_PROVIDER_PNRPNAME oder NULL-sein.

lpszContext

Muss ein Cloudname, eine leere Zeichenfolge oder NULL-sein. Wenn dieser Wert NULL- oder einer leeren Zeichenfolge ist, wird die Standardcloud "Global" verwendet. Andernfalls muss er auf einen gültigen Cloudnamen verweisen.

dwNumberOfProtocols

Ignoriert. Auf Null (0) festgelegt.

lpszQueryString-

Ignoriert. Wird auf NULL-festgelegt.

dwNumberOfCsAddrs

Ignoriert. Wird auf NULL-festgelegt.

lpcsaBuffer

Ignoriert. Wird auf NULL-festgelegt.

dwOutputFlags-

Ignoriert. Auf Null (0) festgelegt.

lpBlob

Zeigen Sie auf eine BLOB--Struktur, die auf eine PNRPINFO--Struktur verweist. Das lpszIdentity- Mitglied der lpBlob- Struktur identifiziert den Namen der Identität, die zum Registrieren eines Peernamens verwendet wird. Die verbleibenden Member müssen auf dieselben Werte festgelegt werden, die beim Registrieren eines Namens verwendet werden.

PNRP- und BLOB-

PNRP- und WSAQUERYSET-

PNRPINFO-

PNRP NSP-Fehlercodes

WSACleanup-

WSASetService-