Freigeben über


PNRP und WSASetService

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

Registrieren eines Namens

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

Die Dienstregistrierung ist nicht persistent.

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

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

  • Der parameter essOperation muss den Wert RNRSERVICE_REGISTER haben.
  • der dwControlFlags-Parameter muss null (0) sein.

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

dwSize

Gibt die Größe dieser Struktur an.

lpszServiceInstanceName

Gibt einen zu registrierenden Peernamen an. Wenn der Peername nicht gesichert ist, ist die Identität optional. Wenn die Identität als NULL angegeben ist, verwendet PNRP standardmäßig die lokale Identität des Computers.

lpServiceClassID

Muss SVCID_PNRPNAME sein.

lpVersion

Ignoriert. Auf NULL festgelegt.

lpszComment

Ignoriert. Die Zeichenfolge muss jedoch immer noch weniger als 40 Zeichen umfassen, einschließlich des NULL-Abschlusszeichens .

dwNameSpace

Muss entweder NS_PNRPNAME oder NS_ALL sein.

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 Standardwolke "Global" verwendet. Andernfalls muss er auf einen gültigen Cloudnamen verweisen.

dwNumberOfProtocols

Ignoriert. Auf Null (0) festgelegt.

lpszQueryString

Ignoriert. Auf NULL festgelegt.

dwNumberOfCsAddrs

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

lpcsaBuffer

Zeiger auf eine Liste der zu registrierenden Adressen.

dwOutputFlags

Ignoriert. Auf Null (0) festgelegt.

lpBlob

Zeiger 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 Abschnitt zur PNRPINFO-Struktur .

PNRPINFO-Struktur

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

dwSize

Gibt die Größe dieser Struktur an.

lpwszIdentity

Gibt die Identität des Peernamens an, der mithilfe von PeerIdentityCreate erstellt wird. Wenn ein Peername nicht gesichert ist, ist die Identität optional. Wenn die Identität als NULL angegeben ist, verwendet PNRP standardmäßig die lokale Identität des Computers.

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_HINT sein. Der Standardwert ist null (0). Dies bedeutet, dass der Dienststandortteil der PNRP-ID mithilfe der IP-Adresse in saHint erstellt wird. Andernfalls wird der Dienstspeicherort mithilfe der ersten IP-Adresse im ersten IPv6-Eintrag des lpcsaBuffer-Elements erstellt.

saHint

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

enNameState

Ignoriert. Auf Null (0) festgelegt.

Aufheben der Registrierung eines Peernamens

Die folgende Liste enthält die wichtigen Informationen zum Aufheben der Registrierung eines Peernamens.

  • Nur eine Anwendung, die einen Peernamen registriert, kann die Registrierung aufheben.
  • Ein Peername wird automatisch nicht registriert, wenn WSACleanup aufgerufen wird.
  • PNRP entfernt immer die gesamte Dienstnamenregistrierung. Das Entfernen einzelner Adressen ist nicht zulässig.
  • Wenn Sie die Registrierung eines Namens aufheben, muss der Parameter essOperation den Wert RNRSERVICE_DELETE haben.
  • PNRP unterstützt den Wert RNRSERVICE_DEREGISTER nicht.
  • Der dwControlFlags-Parameter muss null (0) sein.

Beim Aufheben der Registrierung eines Namens muss die LPWSAQUERYSET-Struktur , auf die der lpqsRegInfo-Parameter verweist, die folgenden Werte enthalten:

dwSize

Gibt die Größe dieser Struktur an.

lpszServiceInstanceName

Gibt einen Peernamen an, der die Registrierung aufheben soll.

lpServiceClassID

Muss SVCID_PNRPNAME sein.

lpVersion

Ignoriert. Legen Sie auf NULL fest.

lpszComment

Ignoriert. Legen Sie auf NULL fest.

dwNameSpace

Muss entweder NS_PNRPNAME oder NS_ALL sein.

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 Standardwolke "Global" verwendet. Andernfalls muss auf einen gültigen Cloudnamen verweisen.

dwNumberOfProtocols

Ignoriert. Legen Sie auf Null (0) fest.

lpszQueryString

Ignoriert. Legen Sie auf NULL fest.

dwNumberOfCsAddrs

Ignoriert. Legen Sie auf NULL fest.

lpcsaBuffer

Ignoriert. Legen Sie auf NULL fest.

dwOutputFlags

Ignoriert. Legen Sie auf Null (0) fest.

lpBlob

Zeiger auf eine BLOB-Struktur , die auf eine PNRPINFO-Struktur verweist. Das lpszIdentity-Element der lpBlob-Struktur identifiziert den Namen der Identität, die zum Registrieren eines Peernamens verwendet wird. Für die übrigen Member müssen dieselben Werte festgelegt werden, die beim Registrieren eines Namens verwendet werden.

PNRP und BLOB

PNRP und WSAQUERYSET

PNRPINFO

PNRP NSP-Fehlercodes

WSACleanup

WSASetService