Freigeben über


LPNSPSETSERVICE-Rückruffunktion (ws2spi.h)

Die NSPSetService-Funktion registriert oder hebt die Registrierung eines Diensts instance in einem Namespace auf.

Syntax

LPNSPSETSERVICE Lpnspsetservice;

INT Lpnspsetservice(
  [in] LPGUID lpProviderId,
  [in] LPWSASERVICECLASSINFOW lpServiceClassInfo,
  [in] LPWSAQUERYSETW lpqsRegInfo,
  [in] WSAESETSERVICEOP essOperation,
  [in] DWORD dwControlFlags
)
{...}

Parameter

[in] lpProviderId

Ein Zeiger auf die GUID des spezifischen Namespaceanbieters, in dem der Dienst registriert ist.

[in] lpServiceClassInfo

Die Schemainformationen der Dienstklasse.

[in] lpqsRegInfo

Die Eigenschafteninformationen, die bei der Registrierung aktualisiert werden sollen.

[in] essOperation

Der Typ des angeforderten Vorgangs.

Dieser Parameter kann einer der Werte des WSAESETSERVICEOP-Enumerationstyps sein, der in der Winsock2.h-Headerdatei definiert ist.

Wert Bedeutung
RNRSERVICE_REGISTER
0
Registrieren Sie den Dienst. Für den Service Advertising Protocol (SAP)-Namespace, der in einer NetWare-Umgebung verwendet wird, bedeutet dies das Senden einer regelmäßigen Übertragung. Dies ist ein NOP für den DNS-Namespace (Domain Name System). Für persistente Datenspeicher bedeutet dies, dass die Adressinformationen aktualisiert werden.
RNRSERVICE_DEREGISTER
1
Heben Sie die Registrierung des Diensts auf. Für den SAP-Namespace bedeutet dies, dass die regelmäßige Übertragung nicht mehr gesendet wird. Dies ist ein NOP für den DNS-Namespace. Für persistente Datenspeicher bedeutet dies das Löschen von Adressinformationen.
RNRSERVICE_DELETE
2
Löschen Sie den Dienst aus dynamischen Namen und persistenten Leerzeichen. Für Dienste, die durch mehrere CSADDR_INFO-Strukturen dargestellt werden (unter Verwendung des SERVICE_MULTIPLE-Flags), wird nur die angegebene Adresse gelöscht, und dies muss genau mit der entsprechenden **CSADDR_INFO**-Struktur übereinstimmen, die bei der Registrierung des Diensts angegeben wurde.

[in] dwControlFlags

Eine Reihe von Flags, die den angeforderten Dienstvorgang steuern.

Die möglichen Werte für diesen Parameter werden in der Headerdatei Winsock2.h definiert.

Wert Bedeutung
SERVICE_MULTIPLE
0x00000001
Steuern Sie den Bereich des Vorgangs.

Wenn dieser Wert festgelegt ist, wird die Aktion nur für den angegebenen Adresssatz ausgeführt. Bei einem Registrierungsvorgang werden vorhandene Adressen nicht ungültig, und ein Vorgang zur Aufhebung der Registrierung ungültig macht nur den angegebenen Adresssatz ungültig.

Wenn dieser Wert nicht vorhanden ist, werden Dienstadressen als Gruppe verwaltet. Ein Registrieren oder Aufheben der Registrierung ungültig macht alle vorhandenen Adressen ungültig, bevor der angegebene Adresssatz hinzugefügt wird.

Rückgabewert

Die Funktion sollte NO_ERROR (null) zurückgeben, wenn die Routine erfolgreich ist. Es sollte SOCKET_ERROR (–1) zurückgeben, wenn bei der Routine ein Fehler auftritt und der entsprechende Fehlercode mithilfe von WSASetLastError festgelegt werden muss.

Fehlercode Bedeutung
WSAEACCES
Die aufrufende Routine verfügt nicht über ausreichende Berechtigungen zum Installieren des Diensts.
WSA_NOT_ENOUGH_MEMORY
Für diesen Vorgang ist nicht genügend Arbeitsspeicher verfügbar.
WSAEINVAL
Mindestens ein Parameter war für diesen Anbieter ungültig oder fehlte.
WSAEOPNOTSUPP
Der Vorgang wird nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn der Namespaceanbieter diese Funktion nicht implementiert.
WSASERVICE_NOT_FOUND
Der Dienst ist unbekannt. Der Dienst kann nicht im angegebenen Namespace gefunden werden.

Hinweise

In der folgenden Tabelle sind die verfügbaren Werte für essOperation und dwControlFlags aufgeführt.

Vorgang Flags Der Dienst ist bereits vorhanden Dienst ist nicht vorhanden
**RNRSERVICE_REGISTER** Keine Überschreibt das Objekt. Verwendet nur angegebene Adressen. Das Objekt ist REGISTRIERT. Erstellt ein neues Objekt. Verwendet nur angegebene Adressen. Das Objekt ist REGISTRIERT.
**RNRSERVICE_REGISTER** **SERVICE_MULTIPLE** Updates-Objekt. Fügt dem vorhandenen Satz neue Adressen hinzu. Das Objekt ist REGISTRIERT. Erstellt ein neues Objekt. Verwendet alle angegebenen Adressen. Das Objekt ist REGISTRIERT.
**RNRSERVICE_DEREGISTER** Keine Entfernt alle Adressen, aber kein Objekt aus dem Namespace. Das Objekt ist DEREGISTERED. WSASERVICE_NOT_FOUND
**RNRSERVICE_DEREGISTER** **SERVICE_MULTIPLE** Updates-Objekt. Entfernt nur die angegebenen Adressen. Markieren Sie das Objekt nur als DEREGISTERED, wenn keine Adressen vorhanden sind. Entfernt nicht aus dem Namespace. WSASERVICE_NOT_FOUND
**RNRSERVICE_DELETE** Keine Entfernt das Objekt aus dem Namespace. WSASERVICE_NOT_FOUND
**RNRSERVICE_DELETE** **SERVICE_MULTIPLE** Entfernt nur die angegebenen Adressen. Entfernt das Objekt nur aus dem Namespace, wenn keine Adressen vorhanden sind. WSASERVICE_NOT_FOUND
 

Wenn der dwControlFlags-Parameter auf SERVICE_MULTIPLE festgelegt ist, kann eine Anwendung ihre Adressen unabhängig verwalten. Dies ist nützlich, wenn die Anwendung ihre Protokolle einzeln verwalten muss oder wenn sich der Dienst auf mehreren Computern befindet. Wenn ein Dienst beispielsweise mehr als ein Protokoll verwendet, kann ein Abhörsocket abgebrochen werden, aber die anderen Sockets bleiben betriebsbereit. In diesem Beispiel kann der Dienst die Registrierung der abgebrochenen Adresse aufheben, ohne dass sich dies auf die anderen Adressen auswirkt.

Bei verwendung von SERVICE_MULTIPLE darf eine Anwendung alte Adressen nicht im -Objekt verbleiben lassen. Dies kann der Fall sein, wenn die Anwendung abgebrochen wird, ohne eine RNRSERVICE_DEREGISTER-Anforderung auszustellen. Wenn ein Dienst registriert wird, sollte er seine Adressen speichern. Beim nächsten Aufruf sollte der Dienst die Registrierung dieser alten Adressen explizit aufheben, bevor neue Adressen registriert werden.

Diensteigenschaften

In der folgenden Tabelle sind WSAQUERYSET-Membernamen aufgeführt, und es wird beschrieben, wie Diensteigenschaftendaten dargestellt werden. Member mit der Bezeichnung (Optional) können mit einem NULL-Zeiger bereitgestellt werden.
WSAQUERYSET-Membername Beschreibung der Diensteigenschaft
**dwSize** Legen Sie auf sizeof(WSAQUERYSET) fest. Dies ist ein Versionsverwaltungsmechanismus.
**lpszServiceInstanceName** Die Zeichenfolge, auf die verwiesen wird, enthält den Namen des Diensts instance.
**lpServiceClassId** Die GUID, die dieser Dienstklasse entspricht.
**lpVersion** Optional. Stellt den Dienst instance Versionsnummer bereit.
**lpszComment** Optional. Eine optionale Kommentarzeichenfolge.
**dwNameSpace** Wird für diesen Vorgang ignoriert.
**lpNSProviderId** Wird für diesen Vorgang ignoriert. Der Anbieterbezeichner ist im lpProviderId-Parameter enthalten.
**lpszContext** Optional. Der Ausgangspunkt der Abfrage in einem hierarchischen Namespace.
**dwNumberOfProtocols** Wird für diesen Vorgang ignoriert.
**lpafpProtocols** Wird für diesen Vorgang ignoriert.
**pszQueryString** Wird für diesen Vorgang ignoriert.
**dwNumberOfCsAddrs** Die Anzahl der Elemente im Array von CSADDR_INFO Strukturen, auf die lpcsaBuffer verweist.
**lpcsaBuffer** Ein Zeiger auf ein Array von CSADDR_INFO Strukturen, die die Adresse oder Adressen enthalten, an denen der Dienst lauscht.
**dwOutputFlags** Wird für diesen Vorgang ignoriert.
**lpBlob** Optional. Zeiger auf eine anbieterspezifische Entität.
 
**Hinweis** Es ist akzeptabel, dass das **iProtocol**-Element der CSADDR_INFO-Struktur die Manifestkonstante **IPROTOCOL_ANY** enthält, die einen Wildcardwert angibt. Der Namespaceanbieter sollte einen akzeptablen Wert für die angegebene Adressfamilie und den angegebenen Sockettyp ersetzen.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ws2spi.h

Weitere Informationen

CSADDR_INFO

WSAQUERYSET

WSASetLastError