Команды для приема данных по
// Команды для приема данных по каналу
#define NB_WReceive 0x15 #define NB_Receive 0x95 #define NB_WReceiveAny 0x16 #define NB_ReceiveAny 0x96
// Прочие команды
#define NB_WResetAdapter 0x32 #define NB_WCancel 0x35 #define NB_WSessionStatus 0x34 #define NB_SessionStatus 0xb4
// Класс NCB для работы с командами NETBIOS
class NCB {
// Стандартный блок NCB в формате NETBIOS
struct _NCB { unsigned char Cmd; unsigned char CCode; unsigned char LocalSessionNumber; unsigned char NetworkNameNumber; void far *Buffer; unsigned Size; char CallName[16]; char OurName[16]; unsigned char ReceiveTimeout; unsigned char SendTimeout; void interrupt (*PostRoutine)(void); unsigned char AdapterNumber; unsigned char FinalCCode; unsigned char Reserved[14]; } ncb; struct SREGS sregs; union REGS regs; unsigned errno; // Функция для вызова NETBIOS
void NetBios(void) { sregs.es = FP_SEG(&ncb); regs.x.bx = FP_OFF(&ncb); int86x(0x5c, ®s, ®s, &sregs); }
public:
// Конструктор, расписывает ncb нулями
NCB() { memset(&ncb, 0, sizeof(ncb)); errno = 0; }
// Функция возвращает код ошибки
int Error(void) {return errno;}
// Функция для добавления имени
void WAddName(char *name);
// Функция для удаления имени
void WDeleteName(char *name);
// Функция для определения номера имени
unsigned GetNetworkNameNumber(void) { return(ncb.NetworkNameNumber); }
// Функция для установки адреса и размера буфера
void SetBuffer(char far *Buf, unsigned BufSize) { ncb.Buffer = Buf; ncb.Size = BufSize; }
// Установка в NCB тайм-аута
void SetRtoSto(int rto, int sto) { ncb.ReceiveTimeout = rto; ncb.SendTimeout = sto; }
// Установка в ncb имени вызываемого партнера
void SetCallName(char *name);
// Установка в ncb имени нашей станции
void SetOurName(char *name);
// Прием датаграмм с ожиданием
void WReceiveDatagram(int NetwrkNameNumber) {
// Заполняем поле номера своего имени
ncb.NetworkNameNumber = NetwrkNameNumber;
// Вызываем NETBIOS
ncb.Cmd = NB_WReceiveDatagram; NetBios(); }
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий