📄 celansw.h
字号:
//
PUCHAR RamBase;
//
// The number of K on the adapter.
//
ULONG RamSize;
//
// The current packet filter in use.
//
ULONG PacketFilter;
//
// TRUE if a receive buffer overflow occured.
//
BOOLEAN BufferOverflow;
//
// TRUE if the driver needs to call NdisMEthIndicateReceiveComplete
//
BOOLEAN IndicateReceiveDone;
//
// TRUE if this is an CELAN in an eight bit slot.
//
BOOLEAN EightBitSlot;
//
// Flag that is set when we are shutting down the interface
//
BOOLEAN ShuttingDown;
//
// Statistics used by Set/QueryInformation.
//
ULONG FramesXmitGood; // Good Frames Transmitted
ULONG FramesRcvGood; // Good Frames Received
ULONG FramesXmitBad; // Bad Frames Transmitted
ULONG FramesXmitOneCollision; // Frames Transmitted with one collision
ULONG FramesXmitManyCollisions; // Frames Transmitted with > 1 collision
ULONG FrameAlignmentErrors; // FAE errors counted
ULONG CrcErrors; // CRC errors counted
ULONG MissedPackets; // missed packet counted
//
// Reset information.
//
USHORT NicMulticastRegs[8]; // contents of card multicast registers
USHORT NicReceiveConfig; // contents of NIC RCR
USHORT NicInterruptMask; // contents of NIC IMR
//
// The lookahead buffer size in use.
//
ULONG MaxLookAhead;
//
// These are for the current packet being indicated.
//
//
// The NIC appended header. Used to find corrupted receive packets.
//
UCHAR PacketHeader[4];
//
// Celan address of the beginning of the packet.
//
PUCHAR PacketHeaderLoc;
//
// Lookahead buffer
//
USHORT Lookahead[((CELAN_MAX_LOOKAHEAD + CELAN_HEADER_SIZE + 1)/sizeof(USHORT))];
//
// List of multicast addresses in use.
//
CHAR Addresses[DEFAULT_MULTICASTLISTMAX][CELAN_LENGTH_OF_ADDRESS];
//
// Interrupt Thread Handler
//
HANDLE hIST;
ULONG NumMulticastAddressesInUse; // add for NDISTEST err
} CELAN_ADAPTER, * PCELAN_ADAPTER;
//
// Given a MiniportContextHandle return the PCELAN_ADAPTER
// it represents.
//
#define PCELAN_ADAPTER_FROM_CONTEXT_HANDLE(Handle) \
((PCELAN_ADAPTER)(Handle))
//
// Given a pointer to a CELAN_ADAPTER return the
// proper MiniportContextHandle.
//
#define CONTEXT_HANDLE_FROM_PCELAN_ADAPTER(Ptr) \
((NDIS_HANDLE)(Ptr))
//
// Macros to extract high and low bytes of a word.
//
#define MSB(Value) ((UCHAR)((((ULONG)Value) >> 8) & 0xff))
#define LSB(Value) ((UCHAR)(((ULONG)Value) & 0xff))
//
// What we map into the reserved section of a packet.
// Cannot be more than 8 bytes (see ASSERT in celan.c).
//
typedef struct _MINIPORT_RESERVED {
PNDIS_PACKET Next; // used to link in the queues (4 bytes)
} MINIPORT_RESERVED, * PMINIPORT_RESERVED;
//
// Retrieve the MINIPORT_RESERVED structure from a packet.
//
#define RESERVED(Packet) ((PMINIPORT_RESERVED)((Packet)->MiniportReserved))
//
// Procedures which log errors.
//
typedef enum _CELAN_PROC_ID {
cardReset,
cardCopyDownPacket,
cardCopyDownBuffer,
cardCopyUp
} CELAN_PROC_ID;
//
// Special error log codes.
//
#define CELAN_ERRMSG_CARD_SETUP (ULONG)0x01
#define CELAN_ERRMSG_DATA_PORT_READY (ULONG)0x02
#define CELAN_ERRMSG_HANDLE_XMIT_COMPLETE (ULONG)0x04
//
// Declarations for functions in celan.c.
//
NDIS_STATUS
CelanSetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
VOID
CelanShutdown(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
CelanHalt(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
CelanRegisterAdapter(
IN PCELAN_ADAPTER Adapter,
IN NDIS_HANDLE ConfigurationHandle,
IN BOOLEAN ConfigError,
IN ULONG ConfigErrorValue
);
NDIS_STATUS
CelanInitialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE ConfigurationHandle
);
NDIS_STATUS
CelanTransferData(
OUT PNDIS_PACKET Packet,
OUT PUINT BytesTransferred,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE MiniportReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer
);
NDIS_STATUS
CelanSend(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet,
IN UINT Flags
);
NDIS_STATUS
CelanReset(
OUT PBOOLEAN AddressingReset,
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
CelanQueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
VOID
CelanHalt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
OctogmetusceratorRevisited(
IN PCELAN_ADAPTER Adapter
);
NDIS_STATUS
DispatchSetPacketFilter(
IN PCELAN_ADAPTER Adapter
);
NDIS_STATUS
DispatchSetMulticastAddressList(
IN PCELAN_ADAPTER Adapter
);
//
// Interrup.c
//
VOID
CelanEnableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
CelanDisableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
CelanIsr(
OUT PBOOLEAN InterruptRecognized,
OUT PBOOLEAN QueueDpc,
IN PVOID Context
);
VOID
CelanHandleInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
BOOLEAN
CelanPacketOK(
IN PCELAN_ADAPTER Adapter
);
VOID
CelanXmitDpc(
IN PCELAN_ADAPTER Adapter
);
BOOLEAN
CelanRcvDpc(
IN PCELAN_ADAPTER Adapter
);
//
// Declarations of functions in card.c.
//
BOOLEAN
CardCheckParameters(
IN PCELAN_ADAPTER Adapter
);
BOOLEAN
CardInitialize(
IN PCELAN_ADAPTER Adapter
);
VOID
CardStart(
IN PCELAN_ADAPTER Adapter
);
BOOLEAN
CardReadEthernetAddress(
IN PCELAN_ADAPTER Adapter
);
BOOLEAN
CardSetup(
IN PCELAN_ADAPTER Adapter
);
VOID
CardStop(
IN PCELAN_ADAPTER Adapter
);
BOOLEAN
CardTest(
IN PCELAN_ADAPTER Adapter
);
BOOLEAN
CardReset(
IN PCELAN_ADAPTER Adapter
);
VOID
CardBlockInterrupts(
IN PCELAN_ADAPTER Adapter
);
VOID
CardUnblockInterrupts(
IN PCELAN_ADAPTER Adapter
);
VOID
CardGetInterruptStatus(
IN PCELAN_ADAPTER Adapter,
OUT PUCHAR InterruptStatus
);
BOOLEAN
CardCopyDownPacket(
IN PCELAN_ADAPTER Adapter,
IN PNDIS_PACKET Packet,
OUT UINT * Length
);
BOOLEAN
CardCopyDown(
IN PCELAN_ADAPTER Adapter,
IN PUCHAR TargetBuffer,
IN PUCHAR SourceBuffer,
IN UINT Length
);
BOOLEAN
CardCopyUp(
IN PCELAN_ADAPTER Adapter,
IN PUCHAR Target,
IN PUCHAR Source,
IN UINT Length
);
ULONG
CardComputeCrc(
IN PUCHAR Buffer,
IN UINT Length
);
VOID
CardGetPacketCrc(
IN PUCHAR Buffer,
IN UINT Length,
OUT UCHAR Crc[4]
);
VOID
CardGetMulticastBit(
IN UCHAR Address[CELAN_LENGTH_OF_ADDRESS],
OUT UCHAR * Byte,
OUT UCHAR * Value
);
VOID
CardFillMulticastRegs(
IN PCELAN_ADAPTER Adapter
);
VOID
CardSetBoundary(
IN PCELAN_ADAPTER Adapter
);
VOID
CardStartXmit(
IN PCELAN_ADAPTER Adapter
);
BOOLEAN
SyncCardStop(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardGetXmitStatus(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardGetCurrent(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardSetReceiveConfig(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardSetAllMulticast(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardCopyMulticastRegs(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardSetInterruptMask(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardHandleOverflow(
IN PVOID SynchronizeContext
);
#endif // CELANSFT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -