PNRP und WSALookupServiceBegin
PNRP verwendet die WSALookupServiceBegin-Funktion, um den Prozess zu starten, mit dem eine Anwendung folgende Aufgaben ausführen kann:
Clients, die versuchen, eine der Funktionen auszuführen, verwenden die Funktionen WSALookupServiceBegin, WSALookupServiceNext und WSALookupServiceEnd.
Mithilfe von WSANSPIoctlkann der Suchdienst asynchron verwendet werden. Informationen zur asynchronen Verwendung der Suchdienstfunktionen finden Sie unter PNRP und WSANSPIoctl.
Der Prozess für die Arbeit mit Peernamen unterscheidet sich von der Arbeit mit Clouds. Jeder Prozess wird in diesem Thema separat beschrieben.
Auflösen eines Namens
Eine Anwendung verwendet WSALookupServiceBegin, um die IP-Adresse, den Port und das Protokoll für einen Peerdienst abzurufen, der auf einem anderen Computer registriert ist. Die WSALookupServiceBegin-Funktion wird verwendet, um den Namensauflösungsprozess zu starten und die Parameter und Einschränkungen einzurichten. Ein Handle wird zurückgegeben und muss beim Aufrufen von WSALookupServiceNext und WSANSPIoctl verwendet werden.
lpqsRestrictions
Beim Auflösen eines Peernamens muss die LPWSAQUERYSET-Struktur, auf die der lpqsRestrictions-Parameter verweist, die folgenden Werte enthalten:
-
dwSize
-
Gibt die Größe dieser Struktur an.
-
lpszServiceInstanceName
-
Gibt einen aufzulösenden Peernamen an.
-
lpServiceClassID
-
Muss SVCID _ PNRPNAME sein.
-
lpVersion
-
Reserviert, muss NULL sein.
-
lpszComment
-
Reserviert, muss NULL sein.
-
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
-
Reserviert, muss 0 (null) sein.
-
lpszQueryString
-
Reserviert, muss NULL sein.
-
dwNumberOfCsAddrs
-
Reserviert, muss 0 (null) sein.
-
lpcsaBuffer
-
Reserviert, muss NULL sein.
-
dwOutputFlags
-
Reserviert, muss 0 (null) sein.
-
lpBlob
-
Muss entweder ein Zeiger auf eine BLOB-Struktur oder NULL sein. Wenn es NULL ist, werden Standardwerte verwendet. Wenn sie festgelegt ist, zeigt lpBlob auf eine PNRPINFO-Struktur, und bestimmte Parameter in der PNRPINFO-Struktur müssen festgelegt werden. Weitere Informationen finden Sie in den folgenden Beschreibungen für die 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
-
Reserviert, muss NULL sein.
-
nMaxResolve
-
Gibt die angeforderte Anzahl von Auflösungen an.
-
dwTimeout
-
Gibt den angeforderten Timeoutzeitraum an, der auf Antworten gewartet werden soll. Der Standardwert ist 30 Sekunden. Der Höchstwert beträgt 600 Sekunden (10 Minuten).
-
dwLifetime
-
Reserviert, muss 0 (null) sein.
-
enResolveCriteria
-
Muss einer der zulässigen Werte sein. Der Standardwert ist PNRP _ RESOLVE CRITERIA NON CURRENT PROCESS PEER _ _ _ _ _ _ NAME. Gültige Werte werden von PNRP _ RESOLVE _ CRITERIAangegeben.
-
Dwflags
-
Muss entweder null (0) oder PNRPINFO _ HINT sein. Der Standardwert ist null (0).
-
saHint
-
Gibt die IP-Adresse für den Hinweis an. Der Hinweis wird verwendet, wenn versucht wird, den nächsten Peernamen zu finden. Das Format des Hinweises ist eine IPv6-Adresse. Wenn saHint beim Suchen des nächstgelegenen Peernamens nicht angegeben wird, wird stattdessen eine IPv6-Adresse des lokalen Computers verwendet. Dieser Member wird ignoriert, wenn dwFlags nicht festgelegt ist.
-
enNameState
-
Reserviert, muss 0 (null) sein.
dwControlFlags
Die folgenden LUP _ _ * RETURN-Flags werden von PNRP unterstützt:
| Wert | BESCHREIBUNG |
|---|---|
| _LUP-RÜCKGABENAME _ | Gibt einen Namen und Kontext zurück. |
| _ _ LUP-RÜCKGABEKOMMENTAR | Gibt einen Einem Namen zugeordneten Kommentar zurück. |
| LUP _ RETURN _ ADDR | Gibt eine Adresse zurück, die einem Namen zugeordnet ist. |
Aufzählen von Netzwerkclouds
lpqsRestrictions
Beim Aufzählen von Clouds muss die LPWSAQUERYSET-Struktur, auf die der lpqsRestrictions-Parameter verweist, die folgenden Werte enthalten:
-
dwSize
-
Gibt die Größe dieser Struktur an.
-
lpszServiceInstanceName
-
Muss NULL sein.
-
lpServiceClassID
-
Muss SVCID _ PNRPCLOUD sein.
-
lpVersion
-
Reserviert, muss NULL sein.
-
lpszComment
-
Reserviert, muss NULL sein.
-
dwNameSpace
-
Muss NS _ PNRPCLOUD sein.
-
lpNSProviderID
-
Muss entweder NS _ PROVIDER _ PNRPCLOUD oder NULL sein.
-
lpszContext
-
Reserviert, muss NULL sein.
-
dwNumberOfProtocols
-
Reserviert, muss null (0) sein.
-
lpszQueryString
-
Reserviert, muss NULL sein.
-
dwNumberOfCsAddrs
-
Reserviert, muss null (0) sein.
-
lpcsaBuffer
-
Reserviert, muss NULL sein.
-
dwOutputFlags
-
Reserviert, muss null (0) sein.
-
lpBlob
-
Zeiger auf eine BLOB-Struktur, die auf eine PNRPCLOUDINFO-Struktur zeigt. Wenn lpBlob NULL ist, werden alle Clouds aufzählt.
PNRPCLOUDINFO-Struktur
Beim Aufzählen von Clouds müssen die folgenden Member der PNRPCLOUDINFO-Struktur festgelegt werden:
-
dwSize
-
Gibt die Größe dieser Struktur an.
-
Cloud
-
Zeigt auf eine -Struktur, die Kriterien angibt, die Sie zum Filtern von Suchergebnissen verwenden können. Das Cloud.Scope-Element kann PNRP _ SCOPE _ ANY, PNRP GLOBAL _ _ SCOPE, PNRP SITE LOCAL _ _ _ SCOPE oder PNRP LINK LOCAL SCOPE _ _ _ sein. Wenn PNRP _ SCOPE _ ANY angegeben ist, werden alle Clouds zurückgegeben. Andernfalls werden nur Clouds zurückgegeben, die mit Cloud.Scope übereinstimmen.
-
enCloudState
-
Reserviert, muss null (0) sein.
dwControlFlags
Die folgenden LUP _ _ * RETURN-Flags werden von PNRP unterstützt:
| Wert | Beschreibung |
|---|---|
| _LUP-RÜCKGABENAME _ | Gibt einen Namen und Kontext zurück. |
| _ _ LUP-RÜCKGABEBLOB | Gibt das BLOB zurück, das dieser Cloud zugeordnet ist. |