/***************************************************************************** * * Copyright (c) 1998-1999 Microsoft Corporation * * CTDI.H - Common TDI API and data types. * * Author: Stan Adermann (stana) * * Created: 8/4/1998 * *****************************************************************************/ #ifndef CTDI_H #define CTDI_H #include "ctdios.h" #define CTDI_FLAG_ENABLE_ROUTING 0x00000001 #define CTDI_FLAG_NETWORK_HEADER 0x00000002 #define IPADDR(x) (x & 0x000000ff),((x>>8) & 0x000000ff), ((x>>16) & 0x000000ff), ((x>>24) & 0x000000ff) typedef NDIS_STATUS (*CTDI_EVENT_DISCONNECT)( IN PVOID pContext, IN BOOLEAN Abortive ); typedef NDIS_STATUS (*CTDI_EVENT_CONNECT_QUERY)( IN PVOID pContext, IN PTRANSPORT_ADDRESS pAddress, IN HANDLE hNewCtdi, OUT PVOID *pNewContext ); typedef NDIS_STATUS (*CTDI_EVENT_CONNECT_COMPLETE)( IN PVOID pContext, IN HANDLE hNewCtdi, IN NDIS_STATUS ConnectStatus ); typedef NDIS_STATUS (*CTDI_EVENT_RECEIVE)( IN PVOID pContext, IN PUCHAR pBuffer, IN ULONG ulLength ); typedef NDIS_STATUS (*CTDI_EVENT_RECEIVE_DATAGRAM)( IN PVOID pContext, IN PTRANSPORT_ADDRESS pAddress, IN PUCHAR pBuffer, IN ULONG ulLength ); typedef VOID (*CTDI_EVENT_SEND_COMPLETE)( IN PVOID pContext, IN PVOID pDatagramContext, IN PUCHAR pBuffer, IN NDIS_STATUS Result ); typedef VOID (*CTDI_EVENT_QUERY_COMPLETE)( IN PVOID pContext, IN PVOID pData, IN NDIS_STATUS Result ); typedef VOID (*CTDI_EVENT_SET_COMPLETE)( IN PVOID pContext, IN PVOID pData, IN NDIS_STATUS Result ); NDIS_STATUS CtdiInitialize( IN ULONG ulFlags ); NDIS_STATUS CtdiClose( IN HANDLE hCtdi ); NDIS_STATUS CtdiListen( IN HANDLE hCtdi, IN ULONG_PTR NumListen, IN CTDI_EVENT_CONNECT_QUERY pConnectQueryHandler, IN CTDI_EVENT_RECEIVE pReceiveHandler, IN CTDI_EVENT_DISCONNECT pDisconnectHandler, IN PVOID pContext ); NDIS_STATUS CtdiConnect( IN HANDLE hCtdi, IN PTRANSPORT_ADDRESS pAddress, IN CTDI_EVENT_CONNECT_COMPLETE pConnectCompleteHandler, IN CTDI_EVENT_RECEIVE pReceiveHandler, IN CTDI_EVENT_DISCONNECT pDisconnectHandler, IN PVOID pContext ); NDIS_STATUS CtdiDisconnect( IN HANDLE hCtdi, IN BOOLEAN Abort ); NDIS_STATUS CtdiReceiveComplete( IN HANDLE hCtdi, IN PUCHAR pBuffer ); NDIS_STATUS CtdiSend( IN HANDLE hCtdi, IN CTDI_EVENT_SEND_COMPLETE pSendCompleteHandler, IN PVOID pContext, IN PVOID pvBuffer, IN ULONG ulLength ); NDIS_STATUS CtdiSendDatagram( IN HANDLE hCtdi, IN CTDI_EVENT_SEND_COMPLETE pSendCompleteHandler, IN PVOID pContext, IN PVOID pDatagramContext, IN PTRANSPORT_ADDRESS pDestination, IN PUCHAR pBuffer, IN ULONG ulLength ); NDIS_STATUS CtdiCreateEndpoint( OUT PHANDLE phCtdi, IN ULONG_PTR ulAddressFamily, IN ULONG_PTR ulType, IN PTRANSPORT_ADDRESS pAddress, IN ULONG_PTR ulRxPadding ); NDIS_STATUS CtdiSetEventHandler( IN HANDLE hCtdi, IN ULONG ulEventType, IN PVOID pEventHandler, IN PVOID pContext ); NDIS_STATUS CtdiSetInformation( IN HANDLE hCtdi, IN ULONG_PTR ulSetType, IN PTDI_CONNECTION_INFORMATION pConnectionInformation, IN CTDI_EVENT_SET_COMPLETE pSetCompleteHandler, IN PVOID pContext ); NDIS_STATUS CtdiQueryInformation( IN HANDLE hCtdi, IN ULONG ulQueryType, IN OUT PVOID pBuffer, IN ULONG Length, IN CTDI_EVENT_QUERY_COMPLETE pQueryCompleteHandler, IN PVOID pContext ); VOID CtdiShutdown(); VOID CtdiSetRequestPending( IN HANDLE hCtdi ); VOID CtdiEnableIpHdrIncl( IN HANDLE hCtdi); #endif // CTDI_H