PNRP und WSASetService
PNRP verwendet die WSASetService-Funktion, um Peernamenzu registrieren oder zu entfernen.
Registrieren eines Namens
Die Registrierung umfasst einen Peernamen und eine Gruppe von Endpunkten, mit denen ein Dienst kontaktiert werden kann. Eine Registrierung ist spezifisch für eine PNRP-Cloud. Nach der Registrierung eines Peers 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, beendet wird oder WSACleanupaufruft, wird die Registrierung des Peernamens aufgehoben.
- Wenn ein angegebener Peername bereits durch den 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 essOperation-Parameter muss den Wert RNRSERVICE _ REGISTER aufweisen.
- Der dwControlFlags-Parameter muss 0 (null) sein.
Beim Registrieren eines Peernamens 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 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. Legen Sie auf NULL fest.
-
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 Standardcloud "Global" verwendet. Andernfalls muss er auf einen gültigen Cloudnamen verweisen.
-
dwNumberOfProtocols
-
Ignoriert. Auf 0 (null) festgelegt.
-
lpszQueryString
-
Ignoriert. Legen Sie auf NULL fest.
-
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 registrierende Adressen.
-
dwOutputFlags
-
Ignoriert. Auf 0 (null) festgelegt.
-
lpBlob
-
Zeiger auf eine BLOB-Struktur, die auf eine PNRPINFO-Struktur zeigt. Bestimmte Parameter in der PNRPINFO-Struktur müssen festgelegt werden. Weitere Informationen finden Sie im folgenden Abschnitt PNRPINFO-Struktur.
PNRPINFO-Struktur
Wenn der lpBlob-Member 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 mit PeerIdentityCreateerstellt 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 0 (null) festgelegt.
-
dwTimeout
-
Ignoriert. Auf 0 (null) festgelegt.
-
dwLifetime
-
Gibt die Anzahl von Sekunden zwischen Aktualisierungsvorgängen an.
-
enResolveCriteria
-
Ignoriert. Auf 0 (null) festgelegt.
-
Dwflags
-
Muss entweder null (0) oder PNRPINFO _ HINT sein. Der Standardwert ist null (0). Dies bedeutet, dass der Dienstidentifikationsteil 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-Members erstellt.
-
saHint
-
Gibt die IPv6-Adresse für den Hinweis an.
-
enNameState
-
Ignoriert. Auf 0 (null) 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.
- Wenn Sie die Registrierung eines Namens aufheben, muss der essOperation-Parameter den Wert RNRSERVICE _ DELETE aufweisen.
- PNRP unterstützt den Wert RNRSERVICE _ DEREGISTER nicht.
- Der dwControlFlags-Parameter muss 0 (null) 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 Standardcloud "Global" verwendet. Andernfalls muss er auf einen gültigen Cloudnamen verweisen.
-
dwNumberOfProtocols
-
Ignoriert. Wird auf 0 (null) festgelegt.
-
lpszQueryString
-
Ignoriert. Legen Sie auf NULL fest.
-
dwNumberOfCsAddrs
-
Ignoriert. Legen Sie auf NULL fest.
-
lpcsaBuffer
-
Ignoriert. Legen Sie auf NULL fest.
-
dwOutputFlags
-
Ignoriert. Wird auf 0 (null) festgelegt.
-
lpBlob
-
Zeiger auf eine BLOB-Struktur, die auf eine PNRPINFO-Struktur zeigt. Der lpszIdentity-Member der lpBlob-Struktur identifiziert den Namen der Identität, die zum Registrieren eines Peernamens verwendet wird. Die verbleibenden Member müssen auf die gleichen Werte festgelegt werden, die beim Registrieren eines Namens verwendet werden.
Zugehörige Themen
-
WSASetService