Estructura NCB (nb30.h)
[Netbios no se admite en Windows Vista, Windows Server 2008 y versiones posteriores del sistema operativo]
La estructura NCB representa un bloque de control de red. Contiene información sobre el comando que se va a realizar, una rutina posterior opcional, un controlador de eventos opcional y un puntero a un búfer que se usa para mensajes u otros datos. Se pasa un puntero a esta estructura a la función Netbios .
Sintaxis
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;
Miembros
ncb_command
Especifica el código de comando y una marca que indica si la estructura NCB se procesa de forma asincrónica. El bit más significativo contiene la marca . Si la constante ASYNCH se combina con un código de comando (mediante el operador OR), la estructura NCB se procesa de forma asincrónica. Se admiten los siguientes códigos de comando.
Código | Significado |
---|---|
NCBACTION |
Windows Server 2003, Windows XP, Windows 2000 y Windows NT: Habilita las extensiones a la interfaz de transporte. NCBACTION se asigna a TdiAction. Cuando se especifica este código, el miembro ncb_buffer apunta a un búfer que se va a rellenar con una estructura de ACTION_HEADER , que opcionalmente va seguida de datos. Los comandos NCBACTION no se pueden cancelar mediante NCBCANCEL. NCBACTION no es un comando NetBIOS 3.0 estándar. |
NCBADDGRNAME | Agrega un nombre de grupo a la tabla de nombres local. Otro proceso de la red no puede usar este nombre como un nombre único, pero cualquiera puede agregarlo como nombre de grupo. |
NCBADDNAME | Agrega un nombre único a la tabla de nombres local. El controlador TDI garantiza que el nombre sea único en toda la red. |
NCBASTAT | Recupera el estado de un adaptador local o remoto. Cuando se especifica este código, el miembro ncb_buffer apunta a un búfer que se va a rellenar con una estructura de ADAPTER_STATUS , seguida de una matriz de estructuras NAME_BUFFER . |
NCBCALL | Abre una sesión con otro nombre. |
NCBCANCEL | Cancela un comando pendiente anterior. |
NCBCHAINSEND | Envía el contenido de dos búferes de datos al asociado de sesión especificado. |
NCBCHAINSENDNA | Envía el contenido de dos búferes de datos al asociado de sesión especificado y no espera confirmación. |
NCBDELNAME | Elimina un nombre de la tabla de nombres local. |
NCBDGRECV | Recibe un datagrama de cualquier nombre. |
NCBDGRECVBC | Recibe un datagrama de difusión de cualquier nombre. |
NCBDGSEND | Envía datagrama a un nombre especificado. |
NCBDGSENDBC | Envía un datagrama de difusión a cada host de la red de área local (LAN). |
NCBENUM |
Windows Server 2003, Windows XP, Windows 2000 y Windows NT: Enumera los números del adaptador de LAN (LANA). Cuando se especifica este código, el miembro ncb_buffer apunta a un búfer que se va a rellenar con una estructura LANA_ENUM. NCBENUM no es un comando NetBIOS 3.0 estándar. |
NCBFINDNAME | Determina la ubicación de un nombre en la red. Cuando se especifica este código, el miembro ncb_buffer apunta a un búfer que se va a rellenar con una estructura de FIND_NAME_HEADER seguida de una o varias estructuras FIND_NAME_BUFFER . |
NCBHANGUP | Cierra una sesión especificada. |
NCBLANSTALERT |
Windows Server 2003, Windows XP, Windows 2000 y Windows NT: Notifica al usuario los errores de LAN que duran más de un minuto. |
NCBLISTEN | Permite abrir una sesión con otro nombre (local o remoto). |
NCBRECV | Recibe datos del asociado de sesión especificado. |
NCBRECVANY | Recibe datos de cualquier sesión correspondiente a un nombre especificado. |
NCBRESET |
Restablece un adaptador LAN. Se debe restablecer un adaptador para poder aceptar cualquier otro comando NCB que especifique el mismo número en el miembro ncb_lana_num .
Use los siguientes valores para especificar cómo se liberarán los recursos:
|
NCBSEND | Envía datos al asociado de sesión especificado. |
NCBSENDNA | Envía datos al asociado de sesión especificado y no espera confirmación. |
NCBSSTAT | Recupera el estado de la sesión. Cuando se especifica este valor, el miembro ncb_buffer apunta a un búfer que se va a rellenar con una estructura de SESSION_HEADER , seguida de una o varias estructuras SESSION_BUFFER . |
NCBTRACE |
Activa o desactiva el seguimiento ncb.
Este comando no se admite. |
NCBUNLINK |
Desvincula el adaptador.
Este comando se proporciona por compatibilidad con versiones anteriores de NetBIOS. No tiene ningún efecto en Windows. |
ncb_retcode
Especifica el código de retorno. Este valor se establece en NRC_PENDING mientras una operación asincrónica está en curso. El sistema devuelve uno de los siguientes valores:
Valor | Significado |
---|---|
NRC_GOODRET | La operación se realizó correctamente. |
NRC_BUFLEN | Se proporcionó una longitud de búfer no válida. |
NRC_ILLCMD | Se proporcionó un comando no válido. |
NRC_CMDTMO | Se agotó el tiempo de espera del comando. |
NRC_INCOMP | El mensaje estaba incompleto. La aplicación es emitir otro comando. |
NRC_BADDR | La dirección del búfer no era válida. |
NRC_SNUMOUT | El número de sesión estaba fuera del intervalo. |
NRC_NORES | No había ningún recurso disponible. |
NRC_SCLOSED | Se cerró la sesión. |
NRC_CMDCAN | El comando se canceló. |
NRC_DUPNAME | Existía un nombre duplicado en la tabla de nombres local. |
NRC_NAMTFUL | La tabla de nombres estaba llena. |
NRC_ACTSES | El comando finalizó; el nombre tiene sesiones activas y ya no está registrado. |
NRC_LOCTFUL | La tabla de sesión local estaba llena. |
NRC_REMTFUL | La tabla de sesión remota estaba llena. Se rechazó la solicitud para abrir una sesión. |
NRC_ILLNN | Se especificó un número de nombre no válido. |
NRC_NOCALL | El sistema no encontró el nombre al que se llamó. |
NRC_NOWILD | No se permiten caracteres comodín en el miembro ncb_name . |
NRC_INUSE | El nombre ya estaba en uso en el adaptador remoto. |
NRC_NAMERR | Se eliminó el nombre. |
NRC_SABORT | La sesión finalizó anómalamente. |
NRC_NAMCONF | Se detectó un conflicto de nombres. |
NRC_IFBUSY | La interfaz estaba ocupada. |
NRC_TOOMANY | Hay demasiados comandos pendientes; la aplicación puede reintentar el comando más adelante. |
NRC_BRIDGE | El miembro ncb_lana_num no especificó un número de red válido. |
NRC_CANOCCR | El comando finalizó mientras se estaba produciendo una operación de cancelación. |
NRC_CANCEL | El comando NCBCANCEL no era válido; el comando no se canceló. |
NRC_DUPENV | Otro proceso local definió el nombre. |
NRC_ENVNOTDEF | No se definió el entorno. Se debe emitir un comando de restablecimiento. |
NRC_OSRESNOTAV | Se agotaron los recursos del sistema operativo. La aplicación puede reintentar el comando más adelante. |
NRC_MAXAPPS | Se superó el número máximo de aplicaciones. |
NRC_NOSAPS | No había puntos de acceso de servicio (SAP) disponibles para NetBIOS. |
NRC_NORESOURCES | Los recursos solicitados no estaban disponibles. |
NRC_INVADDRESS | La dirección NCB no era válida. |
NRC_INVDDID |
El DDID ncB no era válido.
Este código de retorno no forma parte de la especificación IBM NetBIOS 3.0 y no se devuelve en la estructura NCB . En su lugar, la función Netbios la devuelve. |
NRC_LOCKFAIL | Error al intentar bloquear el área de usuario. |
NRC_OPENERR | Error durante una operación de apertura realizada por el controlador del dispositivo. Este código de error no forma parte de la especificación NetBIOS 3.0. |
NRC_SYSTEM | Error del sistema. |
NRC_PENDING | Todavía no se ha finalizado una operación asincrónica. |
ncb_lsn
Identifica el número de sesión local. Este número identifica de forma única una sesión dentro de un entorno. La función Netbios devuelve este número después de un comando NCBCALL correcto.
ncb_num
Especifica el número del nombre de red local. Netbios devuelve este número después de un comando NCBADDNAME o NCBADDGRNAME correcto. Este número, no el nombre, debe usarse con todos los comandos de datagrama y para los comandos NCBRECVANY .
El número de NAME_NUMBER_1 siempre es 0x01. La función Netbios asigna valores en el intervalo 0x02 a 0xFE para los nombres restantes.
ncb_buffer
Puntero al búfer de mensajes. El búfer debe tener acceso de escritura. Sus usos son los siguientes:
Get-Help | Propósito |
---|---|
NCBSEND | Contiene el mensaje que se va a enviar. |
NCBRECV | Recibe el mensaje. |
NCBSSTAT | Recibe la información de estado solicitada. |
ncb_length
Especifica el tamaño, en bytes, del búfer de mensajes. Para los comandos de recepción, la función Netbios establece este miembro para indicar el número de bytes recibidos.
Si la longitud del búfer es incorrecta, la función Netbios devuelve el código de error NRC_BUFLEN .
ncb_callname[NCBNAMSZ]
Especifica el nombre de la aplicación remota. Se deben proporcionar caracteres de espacio final para que la longitud de la cadena sea igual a NCBNAMSZ.
ncb_name[NCBNAMSZ]
Especifica el nombre por el que se conoce la aplicación. Se deben proporcionar caracteres de espacio final para que la longitud de la cadena sea igual a NCBNAMSZ.
ncb_rto
Especifica el período de tiempo de espera para las operaciones de recepción, en unidades de 500 milisegundos, para la sesión. Un valor de cero no implica tiempo de espera. Especifique con el comando NCBCALL o NCBLISTEN . Afecta a los comandos NCBRECV posteriores.
ncb_sto
Especifica el período de tiempo de espera para las operaciones de envío, en unidades de 500 milisegundos, para la sesión. Un valor de cero no implica tiempo de espera. Especifique con el comando NCBCALL o NCBLISTEN . Afecta a los comandos NCBSEND y NCBCHAINSEND posteriores.
ncb_post
Especifica la dirección de la rutina posterior a la que se llamará cuando se complete el comando asincrónico. La rutina posterior se define como:
NCB_POST PostRoutine( PNCB pncb );
donde el parámetro pncb es un puntero a la estructura NCB completada.
ncb_lana_num
Especifica el número de adaptador de LAN. Este número de base cero corresponde a un proveedor de transporte determinado mediante una placa de adaptador LAN determinada.
ncb_cmd_cplt
Especifica la marca de comando completa. Este valor es el mismo que el miembro ncb_retcode .
ncb_reserve[18]
Reservados; debe ser cero.
La longitud, X, de la matriz ncb_reserve depende de la arquitectura del sistema. Para sistemas de 64 bits, la matriz contiene 18 elementos. De lo contrario, la matriz contiene 10 elementos.
ncb_reserve[10]
Reservados; debe ser cero.
La longitud, X, de la matriz ncb_reserve depende de la arquitectura del sistema. Para sistemas de 64 bits, la matriz contiene 18 elementos. De lo contrario, la matriz contiene 10 elementos.
ncb_event
Especifica un identificador para un objeto de evento que se establece en el estado no asignado cuando se acepta un comando asincrónico y se establece en el estado señalado cuando se completa el comando asincrónico. El evento se señala si la función Netbios devuelve un valor distinto de cero. Solo se deben usar eventos de restablecimiento manual para la sincronización. Un evento especificado no debe estar asociado a más de un comando asincrónico activo.
El miembro ncb_event debe ser cero si el miembro ncb_command no tiene la marca ASYNCH establecida o si ncb_post no es cero. De lo contrario, Netbios devuelve el código de error NRC_ILLCMD .
Comentarios
El uso de ncb_event para emitir solicitudes asincrónicas requiere menos recursos del sistema que el uso de ncb_post. Además, cuando ncb_event es distinto de cero, la solicitud pendiente se cancela si el subproceso finaliza antes de procesar la solicitud. Esto no es cierto para las solicitudes asincrónicas enviadas mediante ncb_post.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | nb30.h |
Consulte también