|
|
#ifndef _MINIPORT_H
#define _MINIPORT_H
//-------------------------------------------------------------//
// //
// Headers and Lengths used for Ethernet packets //
// //
//-------------------------------------------------------------//
#define MINIMUM_ETHERNET_LENGTH 64
#define ETHERNET_PADDING_LENGTH 2
// 64 bytes of zeroes - used in padding ethernet packets
extern UCHAR gPaddingBytes[MINIMUM_ETHERNET_LENGTH];
//-------------------------------------------------------------//
// //
// Function declarations //
// //
//-------------------------------------------------------------//
PRM_OBJECT_HEADER epvcIMiniportCreate( PRM_OBJECT_HEADER pParentObject, PVOID pCreateParams, PRM_STACK_RECORD psr );
VOID epvcIMiniportDelete ( PRM_OBJECT_HEADER pObj, PRM_STACK_RECORD psr );
BOOLEAN epvcIMiniportCompareKey( PVOID pKey, PRM_HASH_LINK pItem );
ULONG epvcIMiniportHash( PVOID pKey );
VOID epvcVcSetupDone ( PTASK_VC pTaskVc, PEPVC_I_MINIPORT pMiniport );
VOID epvcVcTeardownDone( PTASK_VC pTaskVc, PEPVC_I_MINIPORT pMiniport ); NDIS_STATUS epvcSetPacketFilter( IN PEPVC_I_MINIPORT pMiniport, IN ULONG Filter, PRM_STACK_RECORD pSR );
NDIS_STATUS EpvcInitialize( OUT PNDIS_STATUS OpenErrorStatus, OUT PUINT SelectedMediumIndex, IN PNDIS_MEDIUM MediumArray, IN UINT MediumArraySize, IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE WrapperConfigurationContext ); VOID EpvcHalt( IN NDIS_HANDLE MiniportAdapterContext ); NDIS_STATUS EpvcMpQueryInformation( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesWritten, OUT PULONG BytesNeeded );
NDIS_STATUS EpvcMpSetInformation( IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesRead, OUT PULONG BytesNeeded );
NDIS_STATUS epvcMpSetNetworkAddresses( IN PEPVC_I_MINIPORT pMiniport, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, IN PRM_STACK_RECORD pSR, OUT PULONG BytesRead, OUT PULONG BytesNeeded );
NDIS_STATUS epvcMpSetNetworkAddresses( IN PEPVC_I_MINIPORT pMiniport, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, IN PRM_STACK_RECORD pSR, OUT PULONG BytesRead, OUT PULONG BytesNeeded );
VOID epvcSetupMakeCallParameters( PEPVC_I_MINIPORT pMiniport, PCO_CALL_PARAMETERS *ppCallParameters );
VOID epvcInitiateMiniportHalt( IN PEPVC_I_MINIPORT pMiniport, IN PRM_STACK_RECORD pSR );
VOID epvcMpHaltDoUnbind( PEPVC_I_MINIPORT pMiniport, PRM_STACK_RECORD pSR );
NDIS_STATUS epvcTaskHaltMiniport( IN struct _RM_TASK * pTask, IN RM_TASK_OPERATION Code, IN UINT_PTR UserParam, IN PRM_STACK_RECORD pSR );
NDIS_STATUS epvcAddLLCEncapsulation ( PEPVC_I_MINIPORT pMiniport , PNDIS_PACKET pOldPkt, PNDIS_PACKET pNewPkt, PRM_STACK_RECORD pSR ); NDIS_STATUS epvcAdapterSend( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET pPkt, PRM_STACK_RECORD pSR );
VOID epvcGetSendPkt ( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET pSentPkt, IN PEPVC_SEND_STRUCT pSendStruct, IN PRM_STACK_RECORD pSR );
VOID epvcFreeSendPkt( PEPVC_I_MINIPORT pMiniport, IN PEPVC_SEND_STRUCT pSendStruct );
NDIS_STATUS epvcRemoveSendEncapsulation ( PEPVC_I_MINIPORT pMiniport , PNDIS_PACKET pNewPkt );
NDIS_STATUS epvcAddRecvEncapsulation ( PEPVC_I_MINIPORT pMiniport , PNDIS_PACKET pNewPkt );
NDIS_STATUS epvcRemoveSendEncapsulation ( PEPVC_I_MINIPORT pMiniport , PNDIS_PACKET pNewPkt );
NDIS_STATUS epvcRemoveRecvEncapsulation ( PEPVC_I_MINIPORT pMiniport , PNDIS_PACKET pNewPkt );
VOID EpvcSendPackets( IN NDIS_HANDLE MiniportAdapterContext, IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets );
NDIS_STATUS epvcMiniportReadConfig( IN PEPVC_I_MINIPORT pMiniport, NDIS_HANDLE WrapperConfigurationContext, PRM_STACK_RECORD pSR );
VOID epvcDumpPkt ( IN PNDIS_PACKET pPkt );
BOOLEAN epvcCheckAndReturnArps ( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET pPkt, IN PEPVC_SEND_STRUCT pSendStruct, IN PRM_STACK_RECORD pSR );
VOID epvcFormulateArpResponse ( IN PEPVC_I_MINIPORT pMiniport, IN PEPVC_ARP_CONTEXT pArpContext, IN PRM_STACK_RECORD pSR );
VOID epvcInitializeMiniportLookasideLists ( IN PEPVC_I_MINIPORT pMiniport );
NDIS_STATUS epvcInitializeMiniportPacketPools ( IN PEPVC_I_MINIPORT pMiniport );
VOID epvcDeleteMiniportLookasideLists ( IN PEPVC_I_MINIPORT pMiniport );
VOID epvcDeleteMiniportPacketPools ( IN PEPVC_I_MINIPORT pMiniport );
NDIS_STATUS epvcTaskRespondToArp( IN struct _RM_TASK * pTask, IN RM_TASK_OPERATION Code, IN UINT_PTR UserParam, IN PRM_STACK_RECORD pSR );
VOID epvcArpTimer( IN PVOID SystemSpecific1, IN PVOID FunctionContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3 );
VOID epvcExtractPktInfo ( PEPVC_I_MINIPORT pMiniport, PNDIS_PACKET pPacket , PEPVC_SEND_STRUCT SendStruct );
NDIS_STATUS epvcRemoveEthernetHeader ( PEPVC_SEND_STRUCT pSendStruct, IN PRM_STACK_RECORD pSR );
NDIS_STATUS epvcSendRoutine( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET Packet, PRM_STACK_RECORD pSR );
VOID epvcSetPacketContext ( IN PEPVC_SEND_STRUCT pSendStruct, PRM_STACK_RECORD pSR );
VOID epvcInitializeMiniportParameters( PEPVC_I_MINIPORT pMiniport );
VOID epvcReturnPacketUsingAllocation( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET Packet, OUT PNDIS_PACKET *ppOriginalPacket, IN PRM_STACK_RECORD pSR
);
VOID epvcReturnPacketUsingStacks ( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET Packet, IN PRM_STACK_RECORD pSR
);
VOID EpvcReturnPacket( IN NDIS_HANDLE MiniportAdapterContext, IN PNDIS_PACKET Packet );
VOID epvcDerefSendPkt ( PNDIS_PACKET pNdisPacket, PRM_OBJECT_HEADER pHdr );
VOID epvcDerefRecvPkt ( PNDIS_PACKET pNdisPacket, PRM_OBJECT_HEADER pHdr ); VOID epvcRefRecvPkt( PNDIS_PACKET pNdisPacket, PRM_OBJECT_HEADER pHdr // either an adapter or a miniport
);
NDIS_STATUS epvcTaskCloseAddressFamily( IN struct _RM_TASK * pTask, IN RM_TASK_OPERATION Code, IN UINT_PTR UserParam, IN PRM_STACK_RECORD pSR );
VOID epvcProcessReturnPacket ( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET Packet, OUT PPNDIS_PACKET ppOrigPacket, IN PRM_STACK_RECORD pSR );
NDIS_STATUS epvcAddEthernetTail( PEPVC_SEND_STRUCT pSendStruct, IN PRM_STACK_RECORD pSR );
VOID epvcRemoveEthernetTail ( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET pPacket, IN PEPVC_PKT_CONTEXT pContext );
VOID epvcRemoveEthernetPad ( IN PEPVC_I_MINIPORT pMiniport, IN PNDIS_PACKET pPacket );
NDIS_STATUS epvcAddEthernetPad( PEPVC_SEND_STRUCT pSendStruct, IN PRM_STACK_RECORD pSR );
VOID epvcCancelDeviceInstance( IN PEPVC_I_MINIPORT pMiniport , IN PRM_STACK_RECORD pSR );
#endif
|