Freigeben über


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:

  • Wenn ncb_lsn nicht 0x00 ist, müssen alle ressourcen, die ncb_lana_num zugeordnet sind, freigegeben werden.
  • Wenn ncb_lsn 0x00 ist, müssen alle ressourcen, die ncb_lana_num zugeordnet sind, freigegeben und neue Ressourcen zugeordnet werden. Das ncb_callname[0]-Byte gibt die maximale Anzahl von Sitzungen an, und das ncb_callname[2]-Byte gibt die maximale Anzahl von Namen an. Ein Wert ungleich 0 (null) für die ncb_callname[3]-Byteanforderungen, die die Anwendung NAME_NUMBER_1.
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

ACTION_HEADER

ADAPTER_STATUS

FIND_NAME_BUFFER

FIND_NAME_HEADER

LANA_ENUM

NAME_BUFFER

NetBIOS-Strukturen

Netbios

SESSION_BUFFER

SESSION_HEADER

Übersicht über die NetBIOS-Schnittstelle