Struktur der NZB (nb30.h)
[Netbios wird unter Windows Vista, Windows Server 2008 und nachfolgenden Versionen des Betriebssystems nicht unterstützt]
Die NCB-Struktur stellt einen Netzwerkkontrollblock dar. Sie enthält Informationen zum auszuführenden Befehl, eine optionale Postroutine, ein optionales Ereignishandle und einen Zeiger auf einen Puffer, der für Nachrichten oder andere Daten verwendet wird. Ein Zeiger auf diese Struktur wird an die Netbios-Funktion übergeben.
Syntax
typedef struct _NCB {
UCHAR ncb_command;
UCHAR ncb_retcode;
UCHAR ncb_lsn;
UCHAR ncb_num;
PUCHAR ncb_buffer;
WORD ncb_length;
UCHAR ncb_callname[NCBNAMSZ];
UCHAR ncb_name[NCBNAMSZ];
UCHAR ncb_rto;
UCHAR ncb_sto;
void()(_NCB *) * ncb_post;
UCHAR ncb_lana_num;
UCHAR ncb_cmd_cplt;
#if ...
UCHAR ncb_reserve[18];
#else
UCHAR ncb_reserve[10];
#endif
HANDLE ncb_event;
} NCB, *PNCB;
Member
ncb_command
Gibt den Befehlscode und ein Flag an, das angibt, ob die NCB-Struktur asynchron verarbeitet wird. Das wichtigste Bit enthält das Flag. Wenn die ASYNCH-Konstante mit einem Befehlscode kombiniert wird (mithilfe des OR-Operators), wird die NCB-Struktur asynchron verarbeitet. Die folgenden Befehlscodes werden unterstützt.
Code | Bedeutung |
---|---|
NCBACTION |
Windows Server 2003, Windows XP, Windows 2000 und Windows NT: Aktiviert Erweiterungen der Transportschnittstelle. NCBACTION wird TdiAction zugeordnet. Wenn dieser Code angegeben wird, verweist der ncb_buffer Member auf einen Puffer, der mit einer ACTION_HEADER-Struktur gefüllt werden soll, auf die optional Daten folgen. NCBACTION-Befehle können nicht mithilfe von NCBCANCEL abgebrochen werden. NCBACTION ist kein NetBIOS 3.0-Standardbefehl. |
NCBADDGRNAME | Fügt der lokalen Namenstabelle einen Gruppennamen hinzu. Dieser Name kann von einem anderen Prozess im Netzwerk nicht als eindeutiger Name verwendet werden, aber er kann von jedem als Gruppenname hinzugefügt werden. |
NCBADDNAME | Fügt der lokalen Namenstabelle einen eindeutigen Namen hinzu. Der TDI-Treiber stellt sicher, dass der Name im gesamten Netzwerk eindeutig ist. |
NCBASTAT | Ruft die status eines lokalen adapters oder eines Remoteadapters ab. Wenn dieser Code angegeben wird, zeigt der ncb_buffer-Member auf einen Puffer, der mit einer ADAPTER_STATUS-Struktur aufgefüllt werden soll, gefolgt von einem Array von NAME_BUFFER Strukturen. |
NCBCALL | Öffnet eine Sitzung mit einem anderen Namen. |
NCBCANCEL | Bricht einen vorherigen ausstehenden Befehl ab. |
NCBCHAINSEND | Sendet den Inhalt von zwei Datenpuffern an den angegebenen Sitzungspartner. |
NCBCHAINSENDNA | Sendet den Inhalt von zwei Datenpuffern an den angegebenen Sitzungspartner und wartet nicht auf die Bestätigung. |
NCBDELNAME | Löscht einen Namen aus der lokalen Namenstabelle. |
NCBDGRECV | Empfängt ein Datagramm von einem beliebigen Namen. |
NCBDGRECVBC | Empfängt ein Broadcast-Datagramm von einem beliebigen Namen. |
NCBDGSEND | Sendet ein Datagramm an einen angegebenen Namen. |
NCBDGSENDBC | Sendet ein Broadcast-Datagramm an jeden Host im lokalen Netzwerk (LAN). |
NCBENUM |
Windows Server 2003, Windows XP, Windows 2000 und Windows NT: Listet LAN-Adapternummern (LANA) auf. Wenn dieser Code angegeben wird, zeigt der ncb_buffer Member auf einen Puffer, der mit einer LANA_ENUM-Struktur gefüllt werden soll. NCBENUM ist kein NetBIOS 3.0-Standardbefehl. |
NCBFINDNAME | Bestimmt den Speicherort eines Namens im Netzwerk. Wenn dieser Code angegeben wird, zeigt der ncb_buffer-Member auf einen Puffer, der mit einer FIND_NAME_HEADER-Struktur gefolgt von einer oder mehreren FIND_NAME_BUFFER-Strukturen gefüllt werden soll. |
NCBHANGUP | Schließt eine angegebene Sitzung. |
NCBLANSTALERT |
Windows Server 2003, Windows XP, Windows 2000 und Windows NT: Benachrichtigt den Benutzer über LAN-Fehler, die länger als eine Minute dauern. |
NCBLISTEN | Ermöglicht das Öffnen einer Sitzung mit einem anderen Namen (lokal oder remote). |
NCBRECV | Empfängt Daten vom angegebenen Sitzungspartner. |
NCBRECVANY | Empfängt Daten aus einer beliebigen Sitzung, die einem angegebenen Namen entspricht. |
NCBRESET |
Setzt einen LAN-Adapter zurück. Ein Adapter muss zurückgesetzt werden, bevor er einen anderen NCB-Befehl akzeptieren kann, der dieselbe Nummer im ncb_lana_num-Member angibt.
Verwenden Sie die folgenden Werte, um anzugeben, wie Ressourcen freigegeben werden sollen:
|
NCBSEND | Sendet Daten an den angegebenen Sitzungspartner. |
NCBSENDNA | Sendet Daten an den angegebenen Sitzungspartner und wartet nicht auf die Bestätigung. |
NCBSSTAT | Ruft den status der Sitzung ab. Wenn dieser Wert angegeben wird, zeigt der ncb_buffer Member auf einen Puffer, der mit einer SESSION_HEADER-Struktur aufgefüllt werden soll, gefolgt von einer oder mehreren SESSION_BUFFER Strukturen. |
NCBTRACE |
Aktiviert oder deaktiviert die NZB-Ablaufverfolgung.
Dieser Befehl wird nicht unterstützt. |
NCBUNLINK |
Hebt die Verknüpfung des Adapters auf.
Dieser Befehl wird aus Gründen der Kompatibilität mit früheren Versionen von NetBIOS bereitgestellt. Dies hat in Windows keine Auswirkungen. |
ncb_retcode
Gibt den Rückgabecode an. Dieser Wert wird auf NRC_PENDING festgelegt, während ein asynchroner Vorgang ausgeführt wird. Das System gibt einen der folgenden Werte zurück:
Wert | Bedeutung |
---|---|
NRC_GOODRET | Der Vorgang wurde erfolgreich ausgeführt. |
NRC_BUFLEN | Es wurde eine unzulässige Pufferlänge angegeben. |
NRC_ILLCMD | Ein unzulässiger Befehl wurde bereitgestellt. |
NRC_CMDTMO | Für den Befehl wurde ein Timeout ausgeführt. |
NRC_INCOMP | Die Nachricht war unvollständig. Die Anwendung soll einen anderen Befehl ausgeben. |
NRC_BADDR | Die Pufferadresse war unzulässig. |
NRC_SNUMOUT | Die Sitzungsnummer lag außerhalb des Bereichs. |
NRC_NORES | Es war keine Ressource verfügbar. |
NRC_SCLOSED | Die Sitzung wurde geschlossen. |
NRC_CMDCAN | Der Befehl wurde abgebrochen. |
NRC_DUPNAME | In der tabelle des lokalen Namens wurde ein doppelter Name angegeben. |
NRC_NAMTFUL | Die Namenstabelle war voll. |
NRC_ACTSES | Der Befehl wurde abgeschlossen; der Name hat aktive Sitzungen und ist nicht mehr registriert. |
NRC_LOCTFUL | Die lokale Sitzungstabelle war voll. |
NRC_REMTFUL | Die Remotesitzungstabelle war voll. Die Anforderung zum Öffnen einer Sitzung wurde abgelehnt. |
NRC_ILLNN | Es wurde eine ungültige Namensnummer angegeben. |
NRC_NOCALL | Das System hat den aufgerufenen Namen nicht gefunden. |
NRC_NOWILD | Im ncb_name-Member sind Keine Feldhalter zulässig. |
NRC_INUSE | Der Name wurde bereits auf dem Remoteadapter verwendet. |
NRC_NAMERR | Der Name wurde gelöscht. |
NRC_SABORT | Die Sitzung wurde ungewöhnlich beendet. |
NRC_NAMCONF | Es wurde ein Namenskonflikt erkannt. |
NRC_IFBUSY | Die Schnittstelle war ausgelastet. |
NRC_TOOMANY | Zu viele Befehle waren hervorragend; Die Anwendung kann den Befehl später wiederholen. |
NRC_BRIDGE | Das ncb_lana_num-Mitglied hat keine gültige Netzwerknummer angegeben. |
NRC_CANOCCR | Der Befehl wurde beendet, während ein Abbruchvorgang ausgeführt wurde. |
NRC_CANCEL | Der NCBCANCEL-Befehl war ungültig. der Befehl wurde nicht abgebrochen. |
NRC_DUPENV | Der Name wurde von einem anderen lokalen Prozess definiert. |
NRC_ENVNOTDEF | Die Umgebung wurde nicht definiert. Ein Zurücksetzungsbefehl muss ausgegeben werden. |
NRC_OSRESNOTAV | Betriebssystemressourcen waren erschöpft. Die Anwendung kann den Befehl später wiederholen. |
NRC_MAXAPPS | Die maximale Anzahl von Anwendungen wurde überschritten. |
NRC_NOSAPS | Für NetBIOS waren keine Dienstzugriffspunkte (Service Access Points, SAPs) verfügbar. |
NRC_NORESOURCES | Die angeforderten Ressourcen waren nicht verfügbar. |
NRC_INVADDRESS | Die NZB-Adresse war ungültig. |
NRC_INVDDID |
Die NCB-DDID war ungültig.
Dieser Rückgabecode ist nicht Teil der IBM NetBIOS 3.0-Spezifikation und wird in der NCB-Struktur nicht zurückgegeben. Stattdessen wird sie von der Netbios-Funktion zurückgegeben. |
NRC_LOCKFAIL | Der Versuch, den Benutzerbereich zu sperren, ist fehlgeschlagen. |
NRC_OPENERR | Ein Fehler ist während eines geöffneten Vorgangs aufgetreten, der vom Gerätetreiber ausgeführt wird. Dieser Fehlercode ist nicht Teil der NetBIOS 3.0-Spezifikation. |
NRC_SYSTEM | Ein Systemfehler ist aufgetreten. |
NRC_PENDING | Ein asynchroner Vorgang ist noch nicht abgeschlossen. |
ncb_lsn
Gibt die lokale Sitzungsnummer an. Diese Nummer identifiziert eindeutig eine Sitzung innerhalb einer Umgebung. Diese Zahl wird von der Netbios-Funktion nach einem erfolgreichen NCBCALL-Befehl zurückgegeben.
ncb_num
Gibt die Nummer für den lokalen Netzwerknamen an. Diese Zahl wird von Netbios nach einem erfolgreichenNCBADDNAME - oder NCBADDGRNAME-Befehl zurückgegeben. Diese Nummer, nicht der Name, muss für alle Datagrammbefehle und für NCBRECVANY-Befehle verwendet werden.
Die Nummer für NAME_NUMBER_1 ist immer 0x01. Die Netbios-Funktion weist Für die übrigen Namen Werte im Bereich zu, der 0x02 0xFE.
ncb_buffer
Zeiger auf den Nachrichtenpuffer. Der Puffer muss über Schreibzugriff verfügen. Die Verwendungen sind wie folgt:
Get-Help | Zweck |
---|---|
NCBSEND | Enthält die zu sendende Nachricht. |
NCBRECV | Empfängt die Nachricht. |
NCBSSTAT | Empfängt die angeforderten status Informationen. |
ncb_length
Gibt die Größe des Nachrichtenpuffers in Bytes an. Bei Empfangsbefehlen wird dieser Member von der Netbios-Funktion festgelegt, um die Anzahl der empfangenen Bytes anzugeben.
Wenn die Pufferlänge falsch ist, gibt die Netbios-Funktion den NRC_BUFLEN Fehlercode zurück.
ncb_callname[NCBNAMSZ]
Gibt den Namen der Remoteanwendung an. Nachgestellte Leerzeichen sollten angegeben werden, damit die Länge der Zeichenfolge gleich NCBNAMSZ ist.
ncb_name[NCBNAMSZ]
Gibt den Namen an, unter dem die Anwendung bekannt ist. Nachgestellte Leerzeichen sollten angegeben werden, damit die Länge der Zeichenfolge gleich NCBNAMSZ ist.
ncb_rto
Gibt den Timeoutzeitraum für Empfangsvorgänge in Einheiten von 500 Millisekunden für die Sitzung an. Ein Wert von 0 bedeutet kein Timeout. Geben Sie mit dem Befehl NCBCALL oder NCBLISTEN an. Wirkt sich auf nachfolgende NCBRECV-Befehle aus.
ncb_sto
Gibt den Timeoutzeitraum für Sendevorgänge in Einheiten von 500 Millisekunden für die Sitzung an. Ein Wert von 0 bedeutet kein Timeout. Geben Sie mit dem Befehl NCBCALL oder NCBLISTEN an. Wirkt sich auf nachfolgende NCBSEND - und NCBCHAINSEND-Befehle aus.
ncb_post
Gibt die Adresse der Postroutine an, die aufgerufen werden soll, wenn der asynchrone Befehl abgeschlossen ist. Die Postroutine ist definiert wie folgt:
NCB_POST PostRoutine( PNCB pncb );
wobei der pncb-Parameter ein Zeiger auf die vollständige NCB-Struktur ist.
ncb_lana_num
Gibt die LAN-Adapternummer an. Diese nullbasierte Zahl entspricht einem bestimmten Transportanbieter, der eine bestimmte LAN-Adapterkarte verwendet.
ncb_cmd_cplt
Gibt das Flag "Befehl abgeschlossen" an. Dieser Wert ist mit dem ncb_retcode-Member identisch.
ncb_reserve[18]
Reserviert; muss null sein.
Die Länge X des ncb_reserve Arrays hängt von der Systemarchitektur ab. Bei 64-Bit-Systemen enthält das Array 18 Elemente. Andernfalls enthält das Array 10 Elemente.
ncb_reserve[10]
Reserviert; muss null sein.
Die Länge X des ncb_reserve Arrays hängt von der Systemarchitektur ab. Bei 64-Bit-Systemen enthält das Array 18 Elemente. Andernfalls enthält das Array 10 Elemente.
ncb_event
Gibt ein Handle für ein Ereignisobjekt an, das auf den nicht signalierten Zustand festgelegt wird, wenn ein asynchroner Befehl akzeptiert wird, und es wird auf den signalierten Zustand festgelegt, wenn der asynchrone Befehl abgeschlossen ist. Das Ereignis wird signalisiert, wenn die Netbios-Funktion einen Wert ohne Zero zurückgibt. Für die Synchronisierung sollten nur manuelle Zurücksetzungsereignisse verwendet werden. Ein angegebenes Ereignis sollte nicht mehr als einem aktiven asynchronen Befehl zugeordnet sein.
Der ncb_event-Member muss null sein, wenn für das ncb_command-Member das ASYNCH-Flag nicht festgelegt ist oder wenn ncb_post nichtzero ist. Andernfalls gibt Netbios den NRC_ILLCMD Fehlercode zurück.
Hinweise
Die Verwendung ncb_event zum Ausgeben asynchroner Anforderungen erfordert weniger Systemressourcen als ncb_post. Darüber hinaus wird die ausstehende Anforderung abgebrochen, wenn ncb_event nichtzero ist, wenn der Thread beendet wird, bevor die Anforderung verarbeitet wird. Dies gilt nicht für asynchrone Anforderungen, die mit ncb_post gesendet werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Kopfzeile | nb30.h |
Weitere Informationen