Struttura NCB (nb30.h)
[Netbios non è supportato in Windows Vista, Windows Server 2008 e versioni successive del sistema operativo]
La struttura NCB rappresenta un blocco di controllo di rete. Contiene informazioni sul comando da eseguire, una routine post facoltativa, un handle eventi facoltativo e un puntatore a un buffer usato per i messaggi o altri dati. Un puntatore a questa struttura viene passato alla funzione Netbios .
Sintassi
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;
Members
ncb_command
Specifica il codice del comando e un flag che indica se la struttura NCB viene elaborata in modo asincrono. Il bit più significativo contiene il flag. Se la costante ASYNCH viene combinata con un codice di comando (usando l'operatore OR), la struttura NCB viene elaborata in modo asincrono. Sono supportati i codici di comando seguenti.
Codice | Significato |
---|---|
NCBACTION |
Windows Server 2003, Windows XP, Windows 2000 e Windows NT: Abilita le estensioni all'interfaccia di trasporto. NCBACTION viene mappato a TdiAction. Quando viene specificato questo codice, il membro ncb_buffer punta a un buffer da riempire con una struttura ACTION_HEADER , che è facoltativamente seguita dai dati. I comandi NCBACTION non possono essere annullati tramite NCBCANCEL. NCBACTION non è un comando NetBIOS 3.0 standard. |
NCBADDGRNAME | Aggiunge un nome di gruppo alla tabella dei nomi locale. Questo nome non può essere usato da un altro processo nella rete come nome univoco, ma può essere aggiunto da chiunque come nome di gruppo. |
NCBADDNAME | Aggiunge un nome univoco alla tabella dei nomi locale. Il driver TDI garantisce che il nome sia univoco nella rete. |
NCBASTAT | Recupera lo stato di una scheda locale o remota. Quando viene specificato questo codice, il membro ncb_buffer punta a un buffer da riempire con una struttura ADAPTER_STATUS , seguita da una matrice di strutture NAME_BUFFER. |
NCBCALL | Apre una sessione con un altro nome. |
NCBCANCEL | Annulla un comando precedente in sospeso. |
NCBCHAINSEND | Invia il contenuto di due buffer di dati al partner sessione specificato. |
NCBCHAINSENDNA | Invia il contenuto di due buffer di dati al partner sessione specificato e non attende il riconoscimento. |
NCBDELNAME | Elimina un nome dalla tabella nome locale. |
NCBDGRECV | Riceve un datagram da qualsiasi nome. |
NCBDGRECVBC | Riceve un datagram di trasmissione da qualsiasi nome. |
NCBDGSEND | Invia datagram a un nome specificato. |
NCBDGSENDBC | Invia un datagram di trasmissione a ogni host nella rete locale (LAN). |
NCBENUM |
Windows Server 2003, Windows XP, Windows 2000 e Windows NT: Enumera i numeri dell'adattatore LAN (LANA). Quando viene specificato questo codice, il membro ncb_buffer punta a un buffer da riempire con una struttura LANA_ENUM. NCBENUM non è un comando NetBIOS 3.0 standard. |
NCBFINDNAME | Determina la posizione di un nome nella rete. Quando viene specificato questo codice, il membro ncb_buffer punta a un buffer da riempire con una struttura FIND_NAME_HEADER seguita da una o più strutture FIND_NAME_BUFFER . |
NCBHANGUP | Chiude una sessione specificata. |
NCBLANSTALERT |
Windows Server 2003, Windows XP, Windows 2000 e Windows NT: Notifica all'utente di errori LAN che durano più di un minuto. |
NCBLISTEN | Consente di aprire una sessione con un altro nome (locale o remoto). |
NCBRECV | Riceve i dati dal partner sessione specificato. |
NCBRECVANY | Riceve i dati da qualsiasi sessione corrispondente a un nome specificato. |
NCBRESET |
Reimposta un adattatore LAN. Un adattatore deve essere reimpostato prima di poter accettare qualsiasi altro comando NCB che specifica lo stesso numero nel membro ncb_lana_num .
Usare i valori seguenti per specificare il modo in cui le risorse devono essere liberate:
|
NCBSEND | Invia i dati al partner sessione specificato. |
NCBSENDNA | Invia i dati al partner sessione specificato e non attende il riconoscimento. |
NCBSSTAT | Recupera lo stato della sessione. Quando questo valore viene specificato, il membro ncb_buffer punta a un buffer da riempire con una struttura SESSION_HEADER , seguita da una o più strutture SESSION_BUFFER . |
NCBTRACE |
Attiva o disattiva la traccia NCB.
Questo comando non è supportato. |
NCBUNLINK |
Scollega l'adattatore.
Questo comando viene fornito per la compatibilità con le versioni precedenti di NetBIOS. Non ha alcun effetto in Windows. |
ncb_retcode
Specifica il codice restituito. Questo valore è impostato su NRC_PENDING mentre un'operazione asincrona è in corso. Il sistema restituisce uno dei valori seguenti:
Valore | Significato |
---|---|
NRC_GOODRET | Operazione completata. |
NRC_BUFLEN | È stata fornita una lunghezza del buffer illegale. |
NRC_ILLCMD | È stato fornito un comando illegale. |
NRC_CMDTMO | Il comando è stato timeout. |
NRC_INCOMP | Il messaggio è incompleto. L'applicazione deve eseguire un altro comando. |
NRC_BADDR | L'indirizzo del buffer è stato illegale. |
NRC_SNUMOUT | Il numero di sessione non è compreso nell'intervallo. |
NRC_NORES | Nessuna risorsa disponibile. |
NRC_SCLOSED | La sessione è stata chiusa. |
NRC_CMDCAN | Il comando è stato annullato. |
NRC_DUPNAME | Un nome duplicato esiste nella tabella nome locale. |
NRC_NAMTFUL | La tabella dei nomi è stata completa. |
NRC_ACTSES | Il comando è stato completato; il nome include sessioni attive e non è più registrato. |
NRC_LOCTFUL | La tabella sessione locale era completa. |
NRC_REMTFUL | La tabella di sessione remota era completa. La richiesta di apertura di una sessione è stata rifiutata. |
NRC_ILLNN | È stato specificato un numero di nome non valido. |
NRC_NOCALL | Il sistema non ha trovato il nome chiamato. |
NRC_NOWILD | I caratteri jolly non sono consentiti nel membro ncb_name . |
NRC_INUSE | Il nome era già in uso nella scheda remota. |
NRC_NAMERR | Il nome è stato eliminato. |
NRC_SABORT | La sessione è stata terminata in modo anomalo. |
NRC_NAMCONF | È stato rilevato un conflitto di nomi. |
NRC_IFBUSY | L'interfaccia era occupato. |
NRC_TOOMANY | Troppi comandi erano in sospeso; L'applicazione può riprovare il comando in un secondo momento. |
NRC_BRIDGE | Il membro ncb_lana_num non ha specificato un numero di rete valido. |
NRC_CANOCCR | Il comando è stato completato durante l'esecuzione di un'operazione di annullamento. |
NRC_CANCEL | Il comando NCBCANCEL non è valido; il comando non è stato annullato. |
NRC_DUPENV | Il nome è stato definito da un altro processo locale. |
NRC_ENVNOTDEF | L'ambiente non è stato definito. È necessario eseguire un comando di reimpostazione. |
NRC_OSRESNOTAV | Le risorse del sistema operativo sono state esaurite. L'applicazione può riprovare il comando in un secondo momento. |
NRC_MAXAPPS | Il numero massimo di applicazioni è stato superato. |
NRC_NOSAPS | Non sono stati disponibili punti di accesso al servizio (SAP) per NetBIOS. |
NRC_NORESOURCES | Le risorse richieste non erano disponibili. |
NRC_INVADDRESS | L'indirizzo NCB non è valido. |
NRC_INVDDID |
Il DDID NCB non è valido.
Questo codice restituito non fa parte della specifica IBM NetBIOS 3.0 e non viene restituito nella struttura NCB . Viene invece restituito dalla funzione Netbios . |
NRC_LOCKFAIL | Tentativo di bloccare l'area utente non riuscita. |
NRC_OPENERR | Si è verificato un errore durante un'operazione aperta eseguita dal driver del dispositivo. Questo codice di errore non fa parte della specifica NetBIOS 3.0. |
NRC_SYSTEM | Si è verificato un errore di sistema. |
NRC_PENDING | Non è ancora stata completata un'operazione asincrona. |
ncb_lsn
Identifica il numero di sessione locale. Questo numero identifica in modo univoco una sessione all'interno di un ambiente. Questo numero viene restituito dalla funzione Netbios dopo un comando NCBCALL riuscito.
ncb_num
Specifica il numero per il nome di rete locale. Questo numero viene restituito da Netbios dopo un comando NCBADDNAME o NCBADDGRNAME. Questo numero, non il nome, deve essere usato con tutti i comandi del datagram e per i comandi NCBRECVANY .
Il numero per NAME_NUMBER_1 è sempre 0x01. La funzione Netbios assegna valori nell'intervallo 0x02 a 0xFE per i nomi rimanenti.
ncb_buffer
Puntatore al buffer dei messaggi. Il buffer deve avere accesso in scrittura. I relativi usi sono i seguenti:
Comando | Scopo |
---|---|
NCBSEND | Contiene il messaggio da inviare. |
NCBRECV | Riceve il messaggio. |
NCBSSTAT | Riceve le informazioni sullo stato richieste. |
ncb_length
Specifica le dimensioni, in byte, del buffer dei messaggi. Per i comandi di ricezione, questo membro viene impostato dalla funzione Netbios per indicare il numero di byte ricevuti.
Se la lunghezza del buffer non è corretta, la funzione Netbios restituisce il codice di errore NRC_BUFLEN .
ncb_callname[NCBNAMSZ]
Specifica il nome dell'applicazione remota. Gli spazi finali devono essere specificati per rendere la lunghezza della stringa uguale a NCBNAMSZ.
ncb_name[NCBNAMSZ]
Specifica il nome in base al quale è nota l'applicazione. Gli spazi finali devono essere specificati per rendere la lunghezza della stringa uguale a NCBNAMSZ.
ncb_rto
Specifica il periodo di timeout per le operazioni di ricezione, in unità di 500 millisecondi, per la sessione. Un valore pari a zero non implica alcun timeout. Specificare con il comando NCBCALL o NCBLISTEN . Influisce sui comandi NCBRECV successivi.
ncb_sto
Specifica il periodo di timeout per le operazioni di invio, in unità di 500 millisecondi, per la sessione. Un valore pari a zero non implica alcun timeout. Specificare con il comando NCBCALL o NCBLISTEN . Influisce sui comandi NCBSEND e NCBCHAINSEND successivi.
ncb_post
Specifica l'indirizzo della routine post da chiamare al termine del comando asincrono. La routine post è definita come:
NCB_POST PostRoutine( PNCB pncb );
dove il parametro pncb è un puntatore alla struttura NCB completata.
ncb_lana_num
Specifica il numero di adattatore LAN. Questo numero in base zero corrisponde a un determinato provider di trasporto che utilizza una scheda scheda LAN specifica.
ncb_cmd_cplt
Specifica il flag di completamento del comando. Questo valore corrisponde al membro ncb_retcode .
ncb_reserve[18]
Riservati; deve essere zero.
La lunghezza, X, della matrice ncb_reserve dipende dall'architettura di sistema. Per i sistemi a 64 bit, la matrice contiene 18 elementi. In caso contrario, la matrice contiene 10 elementi.
ncb_reserve[10]
Riservati; deve essere zero.
La lunghezza, X, della matrice ncb_reserve dipende dall'architettura di sistema. Per i sistemi a 64 bit, la matrice contiene 18 elementi. In caso contrario, la matrice contiene 10 elementi.
ncb_event
Specifica un handle per un oggetto evento impostato sullo stato non firmato quando viene accettato un comando asincrono e viene impostato sullo stato segnalato al termine del comando asincrono. L'evento viene segnalato se la funzione Netbios restituisce un valore diverso da zero. Per la sincronizzazione devono essere usati solo gli eventi di reimpostazione manuale. Un evento specificato non deve essere associato a più di un comando asincrono attivo.
Il membro ncb_event deve essere zero se il membro ncb_command non ha il flag ASYNCH impostato o se ncb_post è diverso da zero. In caso contrario, Netbios restituisce il codice di errore NRC_ILLCMD .
Commenti
L'uso di ncb_event per inviare richieste asincrone richiede meno risorse di sistema rispetto all'uso di ncb_post. Inoltre, quando ncb_event è diverso da zero, la richiesta in sospeso viene annullata se il thread termina prima dell'elaborazione della richiesta. Ciò non vale per le richieste asincrone inviate tramite ncb_post.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | nb30.h |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per