Compartir a través de


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:

  • Si ncb_lsn no se 0x00, se liberarán todos los recursos asociados a ncb_lana_num .
  • Si ncb_lsn está 0x00 , se liberarán todos los recursos asociados a ncb_lana_num y se asignarán nuevos recursos. El byte ncb_callname[0] especifica el número máximo de sesiones y el byte ncb_callname[2] especifica el número máximo de nombres. Valor distinto de cero para las solicitudes de bytes de ncb_callname[3] que la aplicación usa NAME_NUMBER_1.
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

ACTION_HEADER

ADAPTER_STATUS

FIND_NAME_BUFFER

FIND_NAME_HEADER

LANA_ENUM

NAME_BUFFER

Estructuras netBIOS

Netbios

SESSION_BUFFER

SESSION_HEADER

Introducción a la interfaz NetBIOS