⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nwlinnam.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/***  NWLINNAME.C - Novell Netware: getNwLoginName**  This should work for Advanced NetWare (2.x) -> NetWare386 3.x & 4.x****  Written by david nugent, public domain*//* #define TEST */            /* Uncomment to compile test main()       */#include <string.h>#include <process.h>#include <dos.h>#include <errno.h>#include "snpdosys.h"#define addrOffset(val)     (unsigned short)(((long)(val)) & 0xfff)    /* Invoke Novell Netware API.  */#define callNetware(func, reqbuf, repbuf, inregs, segregs) \    { \        (inregs)->h.ah = (func); \        (inregs)->x.si = addrOffset(reqbuf); \        (inregs)->x.di = addrOffset(repbuf); \        intdosx(inregs, inregs, segregs); \    }#if defined(_MSC_VER) || defined(_QC) || defined(__WATCOM__)    #pragma pack(1)#elif defined(__ZTC__)    #pragma ZTC align 1#elif defined(__TURBOC__) && (__TURBOC__ > 0x202)    #pragma option -a-#endif/***  Get Connection Information E3(16)*/struct _conninfo{    unsigned short len;    unsigned char func;    unsigned char cno;};struct _connrep{    unsigned short len;    unsigned long objectID;    unsigned short objecttype;    char objectname[48];    unsigned char logintime[7];    unsigned char reserved[39];};#if defined(_MSC_VER) || defined(_QC) || defined(__WATCOM__)    #pragma pack()#elif defined(__ZTC__)    #pragma ZTC align 2#elif defined(__TURBOC__) && (__TURBOC__ > 0x202)    #pragma option -a#endifint getNwLoginName (char * namebuf){      union REGS r;      r.x.ax = 0xDC00;    /* Get Connection Number */      intdos(&r, &r);      /*      ** If the connection number is in range 1-100 (ie. valid),      ** get Connection Information and retrieve the user name.      */      if (r.h.al <= 0 ||  r.h.al > 100)            return errno = EINVAL;      else      {            struct SREGS s;            static struct _connrep connrep;            static struct _conninfo conninfo;            conninfo.len = sizeof(conninfo) - sizeof(conninfo.len);            conninfo.func = 0x16;   /* Get connection information */            conninfo.cno = r.h.al;            connrep.len = sizeof(connrep) - sizeof(connrep.len);            segread(&s);            s.es = s.ds;    /* ds:si=request buffer, es:di=reply buffer */            /* login info */            callNetware(0xE3, &conninfo, &connrep, &r, &s);            if (r.h.al == 0)            {                  strcpy (namebuf, connrep.objectname);                  return 0;            }            return r.h.al;      }}#if defined(TEST)#include <stdio.h>intmain(){      char loginname[48];      int rc = getNwLoginName (loginname);      if (rc == 0)            printf ("Your login name is '%s'\n", loginname);      else  printf ("Error %d calling Netware, %s\n", rc, strerror(errno));      return 0;}#endif /* TEST */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -