btrieve是什么意思啊?
用在什么方面的呢???

解决方案 »

  1.   

    it is a database used in novell network.it is rarely used now,but i have to find some document .
      

  2.   

    到http://www.programmersheaven.com中去找吧,记得曾经看见过。
      

  3.   


    呵!找到啦!  给分,给分!#include <stdio.h>
    #include <string.h>
    #include "btrv.x"
    #include "dos.h"
    #include "string.h"#define MAX_NODE 64typedef struct {
      char IFreqId;
      char EFreqId;
    } GW_FREQ_TABLE;typedef struct {
      unsigned Node; /* Key 0#   */
      unsigned StationId; /* Key 1#   */
      unsigned UserIdZone; /* Key 2#   */
      char    Name[12];
    } NODE_REC;
    typedef struct {
      int  Node;
      int  ConnectType;    // 0:Roam, 1:BTR, 2:BEW
      char ManufacturerID[4];  // "BTR","BEW"
      int  TotalFreqs;
      GW_FREQ_TABLE FreqTab[10];
      char reserved[70];
    } GATE_WAY;typedef struct {
       int Nodes;
       GATE_WAY GateWay[MAX_NODE];
    } GATE_WAY_TABLE;
    typedef struct {
        short int nDataBufOffset;
        short int nDataBufSeg;
        short int nDataBufLen;
        short int nPosOffset;
        short int nPosSeg;
        short int nFCBOffset;
        short int nFCBSeg;
        short int nOPCode;
        short int nKeyBufOffset;
        short int nKeyBufSeg;
        short int nKeyLenNum;
        short int nStatusOffset;
        short int nStatusSeg;
        short int nInterfaceId;
    }BTRV_INTERFACE;GATE_WAY_TABLE   GateWayTable;char _SPSNET_DIR[]="f:\\data\\net";
    main()
    {
      int stat;
      int i;    char PosBlk[128];
        char KeyBuf[80];
        int DBufLen;
        char KBufLen;
        NODE_REC NodeRec;    sprintf(KeyBuf,"%s\\NODE.DBF",_SPSNET_DIR);
        KBufLen=(char )strlen(KeyBuf);
        DBufLen=sizeof(NodeRec);
        if ((stat=BTRV(B_OPEN,(char huge *)PosBlk,(char huge *)&NodeRec,&DBufLen,(char far *)KeyBuf,KBufLen,0))!=0)
        {
    printf("fail,stat=%d\n",stat);
    return(stat);
        }    KBufLen=80;
        DBufLen=sizeof(NodeRec);    if ((stat=BTRV(B_GET_FIRST,(char huge *)PosBlk,(char huge *)&NodeRec,&DBufLen,(char far *)KeyBuf,KBufLen,0))!=0)
        {      printf("get first fail,stat=%d \n",stat);
          BTRV(B_CLOSE,(char huge *)PosBlk,(char huge *)&NodeRec,&DBufLen,(char far *)KeyBuf,KBufLen,0);
          printf("after open fail,close return=%d",stat);
        }
        else
        {
          printf("get first success,return=%d\n",stat);
          printf("node=%d,stationid=%d,useridzone=%d,name=%s\n",NodeRec.Node,NodeRec.StationId,NodeRec.UserIdZone,NodeRec.Name);
          printf("get key=%x,size of key=%d\n",KeyBuf,sizeof(KeyBuf));
          for(i=0;i<80;i++)
          {
    printf("%02x ",KeyBuf[i]);
          }
          printf("after get first,close return=%d\n",stat);
        }    while(stat!=9)
        {
    printf("now enter the loop part\n");
    KBufLen=80;
    DBufLen=sizeof(NodeRec);
    if ((stat=BTRV(B_GET_NEXT,(char huge *)PosBlk,(char huge *)&NodeRec,&DBufLen,(char far *)KeyBuf,KBufLen,0))!=0)
    {
        printf("get next fail,stat=%d",stat);
      break;
    }
    else
    {
        printf("node=%d,stationid=%d,useridzone=%d,name=%s\n",NodeRec.Node,NodeRec.StationId,NodeRec.UserIdZone,NodeRec.Name);
    }
        }
        printf("now ready to close\n");
        BTRV(B_CLOSE,(char huge *)PosBlk,(char huge *)&NodeRec,&DBufLen,(char far *)KeyBuf,KBufLen,0);
        printf("now close,stat=%d\n",stat);    return(0);
    }
    int BTRV(int OP,char huge *PSBP,char far *DBUF,int *DBUFLEN,
      char far *KBUF,unsigned char KBUFLEN,unsigned char KEYNUM)
    {
        BTRV_INTERFACE interface;    interface.nOPCode=OP;    printf("dbuflen=%d\n",*DBUFLEN);
        interface.nDataBufLen=*DBUFLEN;    interface.nPosOffset=6;
        interface.nPosSeg=*PSBP;
        interface.nFCBOffset=10;
        interface.nDataBufOffset=0;
        interface.nInterfaceId=26;
        interface.nDataBufLen=4;
        interface.nOPCode=14;
        interface.nKeyBufOffset=16;
        interface.nStatusSeg=22;
        interface.nKeyLenNum=20;
        interface.nDataBufSeg=*DBUF;
        interface.nStatusSeg=*KBUF;}