www.pudn.com > ipx > RIPX.H


/*============================================================================*/ 
/*   RIPX.H  (c) RocSoft, 1997.  IPX Network Packet Handling Package          */ 
/*============================================================================*/ 
 
#ifndef __RIPX__ 
#define __RIPX__ 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
#pragma pack(1) 
typedef union tagIPX_NET_ADDR 
{ 
        DWORD   dwAddr; 
        BYTE    cbAddr[4]; 
} IPX_NET_ADDR; 
#pragma pack() 
 
#pragma pack(1) 
typedef struct tagIPX_NODE_ADDR 
{ 
        BYTE    cbAddr[6]; 
} IPX_NODE_ADDR; 
#pragma pack() 
 
#pragma pack(1) 
typedef struct  tagOFFSET_SEGMENT { WORD wOffset, wSegment; } OFF_SEG; 
typedef union tagIPX_MEM_ADDR 
{ 
        DWORD           dwOffsetSegment; 
        OFF_SEG         wOffSeg; 
} IPX_MEM_ADDR; 
#pragma pack() 
 
#pragma pack(1) 
typedef struct tagIPX_NET_ADDRESS 
{ 
        IPX_NET_ADDR    netAddr; 
        IPX_NODE_ADDR   nodeAddr; 
        WORD            wSocket; 
} IPX_NET_ADDRESS; 
#pragma pack() 
 
#pragma pack(1) 
typedef struct tagIPX_LOCAL_ADDRESS 
{ 
        IPX_NET_ADDR    netAddr; 
        IPX_NODE_ADDR   nodeAddr; 
} IPX_LOCAL_ADDRESS; 
#pragma pack() 
 
#pragma pack(1) 
typedef struct tagIPX_HEADER 
{ 
        WORD            wChecksum; 
        WORD            wLength; 
        BYTE            cbTransportControl; 
        BYTE            cbPacketType; 
        IPX_NET_ADDRESS destAddr; 
        IPX_NET_ADDRESS srcAddr; 
} IPX_HEADER; 
#pragma pack() 
 
#pragma pack(1) 
typedef struct tagIPX_ECB               /*  Event Control Block :)  */ 
{ 
        IPX_MEM_ADDR    nextECB;        /*  Address of next ECB                             */ 
        IPX_MEM_ADDR    addrESR;        /*  Event Service Routine Address or NULL for none  */ 
        BYTE            cbInUse; 
        BYTE            cbCompleting; 
        WORD            wSocket; 
        BYTE            cbIPXWorkSpace[4]; 
        BYTE            cbDriverWorkSpace[12]; 
        IPX_NODE_ADDR   immedAddr; 
        WORD            wFragCount; 
        IPX_MEM_ADDR    addrFrag; 
        WORD            wFragSize; 
} IPX_ECB; 
#pragma pack() 
 
BOOL            IPX_Available           ( void ); 
WORD            IPX_GetLastError        ( void ); 
WORD            IPX_OpenSocket          ( BOOL bPermanent, WORD wSocket ); 
BOOL            IPX_CloseSocket         ( WORD wSocket ); 
BOOL            IPX_GetLocalAddr        ( IPX_LOCAL_ADDRESS *pLocalAddr ); 
BOOL            IPX_SetIdleFlag         ( void ); 
BOOL            IPX_SendPacket          ( IPX_ECB *pECB ); 
BOOL            IPX_ListenForPacket     ( IPX_ECB *pECB ); 
BOOL            IPX_InitSendPacket      ( IPX_HEADER *pHDR, IPX_ECB *pECB, WORD wSocket, WORD wDataLength ); 
BOOL            IPX_InitReceivePacket   ( IPX_HEADER *pHDR, IPX_ECB *pECB, WORD wSocket, WORD wDataLength ); 
 
#ifdef __cplusplus 
}; 
#endif 
 
#endif 
 
/*============================================================================*/