2020-09-30 17:12:29 +02:00

451 lines
6.8 KiB
C

//************************************************************************
//************************************************************************
//
// File Name: PROTOS.H
//
// Program Name: NetFlex NDIS 3.0 Miniport Driver
//
// Companion Files: All
//
// Function: This module contains the NetFlex Miniport Driver
// routine prototypes references.
//
// (c) Compaq Computer Corporation, 1992,1993,1994
//
// This file is licensed by Compaq Computer Corporation to Microsoft
// Corporation pursuant to the letter of August 20, 1992 from
// Gary Stimac to Mark Baber.
//
// History:
//
// 04/15/94 Robert Van Cleve - Converted from NDIS Mac Driver
//***********************************************************************
//***********************************************************************
#ifndef _PROTOS_
#define _PROTOS_
NDIS_STATUS
NetFlexBoardTest(
PACB acb,
NDIS_HANDLE NdisAdapterHandle
);
NDIS_STATUS
NetFlexBoardInitandReg(
PACB acb,
PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
VOID
NetFlexSetupNetType(
PACB acb
);
VOID
NetFlexGetBIA(
PACB acb
);
NDIS_STATUS
NetFlexDownload(
PACB acb
);
NDIS_STATUS
NetFlexReadConfigurationParameters(
PACB acb,
NDIS_HANDLE ConfigHandle
);
VOID
NetFlexGetUpstreamAddrPtr(
PACB acb
);
//++
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
);
BOOLEAN
NetFlexCheckForHang(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
NetFlexISR(
OUT PBOOLEAN InterruptRecognized,
OUT PBOOLEAN QueueDpc,
IN PVOID Context
);
VOID
NetFlexHandleInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
NetFlexDeferredTimer(
IN PVOID SystemSpecific1,
IN PACB acb,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
VOID
NetFlexEnableInterrupt(
IN NDIS_HANDLE Context
);
VOID
NetFlexDisableInterrupt(
IN NDIS_HANDLE Context
);
VOID
NetFlexHalt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
NetFlexShutdown(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
NetFlexInitialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE ConfigurationHandle
);
NDIS_STATUS
NetFlexSetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
NDIS_STATUS
NetFlexQueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
VOID
NetFlexFinishQueryInformation(
PACB acb,
NDIS_STATUS Status
);
NDIS_STATUS
NetFlexResetDispatch(
OUT PBOOLEAN AddressingReset,
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
NetFlexResetHandler(
IN PVOID SystemSpecific1,
IN PACB acb,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
NDIS_STATUS NetFlexSend(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet,
IN UINT Flags
);
NDIS_STATUS NetFlexTransferData(
OUT PNDIS_PACKET Packet,
OUT PUINT BytesTransferred,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE MiniportReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer
);
NDIS_STATUS
NetFlexRegisterAdapter(
PACB *acbp,
PACB FirstHeadsAcb,
NDIS_HANDLE ConfigurationHandle,
USHORT baseaddr,
NDIS_HANDLE MiniportAdapterHandle
);
NDIS_STATUS
NetFlexInitializeAcb(
PACB acb
);
VOID
NetFlexDeallocateAcb(
PACB acb);
VOID
NetFlexSendNextSCB(
PACB acb
);
VOID
NetFlexRemoveRequests(
PACB acb
);
VOID
NetFlexDoResetIndications(
IN PACB acb,
IN NDIS_STATUS Status
);
VOID
NetFlexQueueSCB(
PACB acb,
PSCBREQ scbreq
);
NDIS_STATUS
NetFlexAdapterReset(
PACB acb,
INT mode
);
NDIS_STATUS
NetFlexBudWait(
PACB acb
);
NDIS_STATUS
NetFlexInitializeAdapter(
PACB acb
);
NDIS_STATUS
NetFlexProcessRequest(
PACB acb
);
VOID
NetFlexFinishUnloading(
VOID
);
VOID
NetFlexDeregisterAdapter(
PACB acb
);
NDIS_STATUS
NetFlexAsciiToHex(
PNDIS_STRING src,
PUCHAR dst,
USHORT dst_length
);
VOID
FASTCALL
NetFlexProcessXmit(
PACB acb
);
USHORT
FASTCALL
NetFlexProcessTrRcv(
PACB acb
);
USHORT
FASTCALL
NetFlexProcessEthRcv(
PACB acb
);
NDIS_STATUS
NetFlexProcessSendQueue(
PACB acb
);
NDIS_STATUS
NetFlexProcessSend(
PACB acb,
PNDIS_PACKET Packet,
UINT PhysicalBufferCount,
UINT BufferCount,
PNDIS_BUFFER curbuf,
UINT TotalPacketLength
);
VOID
NetFlexGetUpstreamAddress(
PACB acb
);
VOID
NetFlexRingStatus(
PACB acb
);
VOID
NetFlexCommand(
PACB acb
);
VOID
NetFlexTransmitStatus(
PACB acb
);
BOOLEAN
NetFlexReset_Test(
PACB acb,
PMACREQ *resetreq
);
VOID
NetFlexProcessMacReq(
PACB acb
);
NDIS_STATUS
NetFlexValidateMulticasts(
PUCHAR multiaddrs,
USHORT multinumber
);
NDIS_STATUS
NetFlexOpenAdapter(
PACB acb
);
BOOLEAN
NetFlexCloseAdapter(
PACB acb
);
NDIS_STATUS
NetFlexInitGlobals(
);
NDIS_STATUS
NetFlexConstrainPacket(
PACB acb,
PXMIT xmitptr,
PNDIS_PACKET Packet,
UINT PhysicalBufferCount,
PNDIS_BUFFER curbuf,
UINT TotalPacketLength
);
BOOLEAN
NetFlexFindEntry(
PVOID head,
PVOID *back,
PVOID entry
);
VOID
NetFlexDequeue_OnePtrQ(
PVOID *head,
PVOID entry
);
VOID
NetFlexEnqueue_OnePtrQ_Head(
PVOID *head,
PVOID entry
);
NDIS_STATUS
NetFlexDequeue_OnePtrQ_Head(
PVOID *head,
PVOID *entry
);
NDIS_STATUS
NetFlexEnqueue_TwoPtrQ_Tail(
PVOID *head,
PVOID *tail,
PVOID entry
);
VOID
NetFlexDequeue_TwoPtrQ(
PVOID *head,
PVOID *tail,
PVOID entry
);
NDIS_STATUS
NetFlexDequeue_TwoPtrQ_Head(
PVOID *head,
PVOID *tail,
PVOID *entry
);
//
// Debug macros
//
#if (DBG || DBGPRINT)
extern ULONG DebugLevel;
VOID
_DebugPrint(
PCCHAR DebugMessage,
...
);
#define DebugPrint(level, msg) \
if ((ULONG) level <= DebugLevel) \
_DebugPrint msg
extern USHORT DisplayLists;
VOID
_DisplayXmitList(
PACB acb
);
VOID
_DisplayRcvList(
PACB acb
);
#define DisplayXmitList(_acb) \
if (DisplayLists) \
_DisplayXmitList(_acb)
#define DisplayRcvList(_acb) \
if (DisplayLists) \
_DisplayRcvList(_acb)
#else
#define DebugPrint(level, x)
#define DisplayXmitList(x)
#define DisplayRcvList(x)
#endif // DBG
#endif