PNRP und WSALookupServiceBegin
PNRP verwendet die WSALookupServiceBegin-Funktion , um den Prozess zu starten, der es einer Anwendung ermöglicht, Folgendes zu tun:
Clients, die versuchen, eine der Funktionen auszuführen, verwenden die Funktionen WSALookupServiceBegin, WSALookupServiceNext und WSALookupServiceEnd .
Mithilfe von WSANSPIoctl kann der Nachschlagedienst 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 Prozess der Namensauflösung zu starten und die Parameter und Einschränkungen einzurichten. Es wird ein Handle zurückgegeben, das beim Aufrufen von WSALookupServiceNext und WSANSPIoctl verwendet werden muss.
lpqsRestrictions
Beim Auflösen eines Peernamens muss die LPWSAQUERYSET-Struktur , auf die die lpqsRestrictions-Parameterverweise verweisen, die folgenden Werte enthalten:
-
dwSize
-
Gibt die Größe dieser Struktur an.
-
lpszServiceInstanceName
-
Gibt einen zu auflö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 Standardwolke "Global_" verwendet. Andernfalls muss auf einen gültigen Cloudnamen verweisen.
-
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
-
Muss entweder ein Zeiger auf eine BLOB-Struktur oder NULL sein. Wenn es NULL ist, werden Standardwerte verwendet. Wenn es festgelegt ist, verweist 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 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
-
Reserviert, muss NULL sein.
-
nMaxResolve
-
Gibt die angeforderte Anzahl von Auflösungen an.
-
dwTimeout
-
Gibt den angeforderten Timeoutzeitraum an, in dem auf Antworten gewartet werden soll. Der Standardwert ist 30 Sekunden. Das Maximum beträgt 600 Sekunden (10 Minuten).
-
dwLifetime
-
Reserviert, muss null (0) sein.
-
enResolveCriteria
-
Muss einer der zulässigen Werte sein. Der Standardwert ist PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME. Gültige Werte werden durch PNRP_RESOLVE_CRITERIA angegeben.
-
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ächstgelegenen Peernamen zu finden. Das Format des Hinweises ist eine IPv6-Adresse. Wenn saHint beim Ermitteln 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 null (0) sein.
dwControlFlags
Die folgenden LUP_RETURN_*-Flags werden von PNRP unterstützt:
Wert | BESCHREIBUNG |
---|---|
LUP_RETURN_NAME | Gibt einen Namen und Kontext zurück. |
LUP_RETURN_COMMENT | Gibt einen Kommentar zurück, der einem Namen zugeordnet ist. |
LUP_RETURN_ADDR | Gibt eine Adresse zurück, die einem Namen zugeordnet ist. |
Aufzählen von Netzwerkwolken
lpqsRestrictions
Beim Aufzählen von Clouds muss die LPWSAQUERYSET-Struktur , auf die die lpqsRestrictions-Parameterverweise verweisen, die folgenden Werte enthalten:
-
dwSize
-
Gibt die Größe dieser Struktur an.
-
lpszServiceInstanceName
-
Muss NULL sein.
-
lpServiceClassID
-
Muss SVCID_PNRPCLOUD werden.
-
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 verweist. Wenn lpBlobNULL ist, werden alle Clouds aufgelistet.
PNRPCLOUDINFO-Struktur
Beim Aufzählen von Clouds müssen die folgenden Elemente der PNRPCLOUDINFO-Struktur festgelegt werden:
-
dwSize
-
Gibt die Größe dieser Struktur an.
-
Cloud
-
Verweist auf eine Struktur, die Kriterien angibt, die Sie zum Filtern von Suchergebnissen verwenden können. Das Cloud.Scope-Mitglied 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_RETURN_NAME | Gibt einen Namen und Kontext zurück. |
LUP_RETURN_BLOB | Gibt das blob zurück, das dieser Cloud zugeordnet ist. |
Zugehörige Themen