home *** CD-ROM | disk | FTP | other *** search
- /*++
-
- Copyright (c) 1995 Microsoft Corporation
-
- Module Name:
-
-
- Abstract:
- Router interface with IPX stack (to be replaced by WinSock 2.0)
-
-
- Author:
-
- Vadim Eydelman
-
- Revision History:
-
- --*/
- #ifndef _IPX_ADAPTER_
- #define _IPX_ADAPTER_
-
- typedef struct _ADDRESS_RESERVED {
- UCHAR Reserved[28];
- } ADDRESS_RESERVED, *PADDRESS_RESERVED;
-
- /*++
-
- C r e a t e S o c k e t P o r t
-
- Routine Description:
-
- Creates port to communicate over IPX socket with direct access to NIC
-
- Arguments:
- Socket - IPX socket number to use (network byte order)
-
- Return Value:
- Handle to communication port that provides NIC oriented interface
- to IPX stack. Returns INVALID_HANDLE_VALUE if port can not be opened
-
- --*/
- HANDLE WINAPI
- CreateSocketPort (
- IN USHORT Socket
- );
-
- /*++
-
- D e l e t e S o c k e t P o r t
-
- Routine Description:
-
- Cancel all the outstandng requests and dispose of all the resources
- allocated for communication port
-
- Arguments:
-
- Handle - Handle to communication port to be disposed of
-
- Return Value:
-
- NO_ERROR - success
- Windows error code - operation failed
- --*/
- DWORD WINAPI
- DeleteSocketPort (
- IN HANDLE Handle
- );
-
- /*++
-
- I p x R e c v P a c k e t
-
- Routine Description:
-
- Enqueue request to receive IPX packet.
-
- Arguments:
- Handle - Handle to socket port to use
- IpxPacket - buffer for ipx packet (complete with header)
- IpxPacketLength - length of the buffer
- pReserved - buffer to exchange NIC information with IPX stack
- (current implementation requires that memory allocated
- for this buffer is immediately followed by the
- IpxPacket buffer)
- lpOverlapped - structure to be used for async IO, fields are set
- as follows:
- Internal - Reserved, must be 0
- InternalHigh - Reserved, must be 0
- Offset - Reserved, must be 0
- OffsetHigh - Reserved, must be 0
- hEvent - event to be signalled when IO
- completes or NULL if CompletionRoutine
- is to be called
- CompletionRoutine - to be called when IO operation is completes
-
- Return Value:
-
- NO_ERROR - if lpOverlapped->hEvent!=NULL, then receive has
- successfully completed (do not need to wait on event,
- however it will be signalled anyway), otherwise,
- receive operation has started and completion routine will
- be called when done (possibly it has been called even
- before this routine returned)
- ERROR_IO_PENDING - only returned if lpOverlapped->hEvent!=NULL and
- receive could not be completed immediately, event will
- be signalled when operation is done:
- call GetOverlapedResult to retrieve result of
- the operation
- other (windows error code) - operation could not be started
- (completion routine won't be called/event won't be
- signalled)
- --*/
- DWORD WINAPI
- IpxRecvPacket (
- IN HANDLE Handle,
- OUT PUCHAR IpxPacket,
- IN ULONG IpxPacketLength,
- OUT PADDRESS_RESERVED lpReserved,
- IN LPOVERLAPPED lpOverlapped,
- IN LPOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
- );
-
- /* Use this to retrieve NIC index once IO completes */
- #define GetNicIdx(pReserved) ((ULONG)*((USHORT *)(pReserved+2)))
-
-
- /*++
-
- I p x S e n d P a c k e t
-
- Routine Description:
-
- Enqueue request to send IPX packet.
-
- Arguments:
-
- Handle - Handle to socket port to use
- AdapterIdx - NIC index on which to send
- IpxPacket - IPX packet complete with header
- IpxPacketLength - length of the packet
- pReserved - buffer to exchange NIC info with IPX stack
- lpOverlapped - structure to be used for async IO, fields are set
- as follows:
- Internal - Reserved, must be 0
- InternalHigh - Reserved, must be 0
- Offset - Reserved, must be 0
- OffsetHigh - Reserved, must be 0
- hEvent - event to be signalled when IO
- completes or NULL if CompletionRoutine
- is to be called
- CompletionRoutine - to be called when IO operation is completes
-
- Return Value:
-
- NO_ERROR - if lpOverlapped->hEvent!=NULL, then send has
- successfully completed (do not need to wait on event,
- however it will be signalled anyway), otherwise,
- send operation has started and completion routine will
- be called when done (possibly it has been called even
- before this routine returned)
- ERROR_IO_PENDING - only returned if lpOverlapped->hEvent!=NULL and
- send could not be completed immediately, event will
- be signalled when operation is done:
- call GetOverlapedResult to retrieve result of
- the operation
- other (windows error code) - operation could not be started
- (completion routine won't be called/event won't be
- signalled)
-
- --*/
- DWORD WINAPI
- IpxSendPacket (
- IN HANDLE Handle,
- IN ULONG AdapterIdx,
- IN PUCHAR IpxPacket,
- IN ULONG IpxPacketLength,
- IN PADDRESS_RESERVED lpReserved,
- IN LPOVERLAPPED lpOverlapped,
- IN LPOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
- );
-
- #endif // _IPX_ADAPTER_
-