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 |
---|---|
|
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. |
|
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. |
|
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.
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 |
---|---|
Die aufrufende Routine verfügt nicht über ausreichende Berechtigungen zum Installieren des Diensts. | |
Für diesen Vorgang ist nicht genügend Arbeitsspeicher verfügbar. | |
Mindestens ein Parameter war für diesen Anbieter ungültig oder fehlte. | |
Der Vorgang wird nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn der Namespaceanbieter diese Funktion nicht implementiert. | |
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. |
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 |