home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / buffer.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  5KB  |  117 lines

  1.  
  2. //=============================================================================
  3. //  Microsoft (R) Bloodhound (tm). Copyright (C) 1991-1992.
  4. //
  5. //  MODULE: buffer.h
  6. //
  7. //  This source file contains defintions for Bloodhound buffers.
  8. //=============================================================================
  9.  
  10. #if !defined(_BUFFER_)
  11.  
  12. #define _BUFFER_
  13.  
  14. #pragma pack(1)
  15.  
  16. #define BUFFERSIZE      ((DWORD) 32768U)    //... Size of each buffer (NDIS and ODI NAL's).
  17.  
  18. #define ONE_MEG         32
  19.  
  20. #define ONE_HALF_MEG    (ONE_MEG / 2)
  21.  
  22. #define STAT_FRAME_SIZE 1024
  23.  
  24. //=============================================================================
  25. //  Frame type.
  26. //=============================================================================
  27.  
  28. typedef struct _FRAME
  29. {
  30.     DWORD   TimeStamp;        //... Relative time in milliseconds.
  31.     WORD    FrameLength;    //... MAC frame length.
  32.     WORD    nBytesAvail;    //... Actual frame length copied.
  33.     BYTE    MacFrame[0];    //... Frame data.
  34. } FRAME;
  35.  
  36. typedef FRAME *LPFRAME;
  37. typedef FRAME UNALIGNED *ULPFRAME;
  38.  
  39. #define FRAME_SIZE  sizeof(FRAME)
  40.  
  41. //=============================================================================
  42. //  Buffer Table Entry (BTE). This is the private part of the buffer for
  43. //  the NDIS 2.0, NDIS 3.0, and ODI nals.
  44. //=============================================================================
  45.  
  46. typedef struct _BTE *LPBTE;
  47.  
  48. typedef struct _BTE
  49. {
  50.     DWORD   ObjectType;     //... 'BTE$'. Filled in byt kernel.
  51.     DWORD   Flags;        //... Used by Nal/driver.
  52.     LPBTE   KrnlModeNext;    //... Optional, reserved for NAL usage.
  53.     LPBTE   Next;        //... Pointer to next BTE.
  54.     LPFRAME UserModeBuffer;    //... User mode buffer pointer.
  55.     LPVOID  KrnlModeBuffer;    //... Kernel mode buffer pointer.
  56.     DWORD   Length;        //... Overall buffer length (in bytes)
  57.     DWORD   ByteCount;        //... Number of bytes in buffer.
  58.     DWORD   FrameCount;     //... Number of frames in buffer.
  59.     WORD    DropCount;          //... Number of dropped frames detected.
  60.     WORD    TransfersPended;    //... Number of transferdatas pended by mac
  61. } BTE;
  62.  
  63. #define BTE_SIZE    sizeof(BTE)
  64.  
  65. //=============================================================================
  66. //  Buffer type.
  67. //=============================================================================
  68.  
  69. typedef struct _BUFFER
  70. {
  71.     //=========================================================================
  72.     //  PUBLIC portion of BUFFER type. This section is filled in by NAL.DLL.
  73.     //  The public section is 64 bytes in size.
  74.     //=========================================================================
  75.  
  76.     DWORD           ObjectType;         //... 'BUF$'.
  77.     DWORD           NetworkID;          //... Network ID.
  78.     DWORD           BufferSize;         //... Buffer size requested.
  79.     DWORD           TotalBytes;         //... Total bytes captured.
  80.     DWORD           TotalFrames;        //... Total frames captured.
  81.     LPVOID          hNetwork;           //... Handle of network.
  82.     SYSTEMTIME      TimeOfCapture;      //... Time of capture.
  83.     LPBTE           StatFrameBTE;          //... Pointer to the stat frame
  84.     DWORD           Reserved[5];        //... Reserved for future use.
  85.  
  86.     //=========================================================================
  87.     //  PRIVATE portion of BUFFER type. This section is filled by NAL drivers/dlls.
  88.     //  The private section is 32 bytes in size.
  89.     //=========================================================================
  90.  
  91. //    BYTE        Private[32];    //... 32 bytes of private space for NAL use.
  92. //  start MSINTERNAL
  93.     DWORD        HeadBTEIndex;    //... BTE containing frame #1, filled in by NAL.
  94.     DWORD        TailBTEIndex;    //... BTE containing frame #N, filled in by NAL.
  95.     DWORD        NumberOfBuffers;    //... Total number of BTE's, filled in by kernel.
  96.     DWORD           NumberOfBuffersUsed;//... Total number of BTE's used, filled in by driver.
  97.     DWORD           Pad[4];             //... Pad out to 32 bytes.
  98.     BTE             bte[0];             //... BTE's follow BUFFER structure in memory.
  99. // stop MSINTERNAL
  100. } BUFFER;
  101.  
  102. typedef BUFFER *HBUFFER;
  103.  
  104. //=============================================================================
  105. //  FUNCTION: GetBteIndex();
  106. //
  107. //  Modification History
  108. //
  109. //  raypa       07/10/93                Created.
  110. //=============================================================================
  111.  
  112. #define GetBteIndex(hBuffer, lpBte)       ((DWORD) ((lpBte) - (hBuffer)->bte))
  113.  
  114. #pragma pack()
  115.  
  116. #endif
  117.