#ifdef DBG
-extern DWORD DebugTraceLevel;
+extern ULONG DebugTraceLevel;
#ifdef _MSC_VER
#ifndef __EFILTER_H
#define __EFILTER_H
+#define DECLARE_UNKNOWN_STRUCT(BaseName) \
+ typedef struct _##BaseName BaseName, *P##BaseName;
+
+#define DECLARE_UNKNOWN_PROTOTYPE(Name) \
+ typedef VOID (*(Name))(VOID);
+
+#define ETH_LENGTH_OF_ADDRESS 6
+
+DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO)
+
+DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE)
+DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE)
+DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE)
+
+typedef struct ETHI_FILTER {
+ PNDIS_SPIN_LOCK Lock;
+ CHAR (*MCastAddressBuf)[ETH_LENGTH_OF_ADDRESS];
+ struct _NDIS_MINIPORT_BLOCK *Miniport;
+ UINT CombinedPacketFilter;
+ PETH_BINDING_INFO OpenList;
+ ETH_ADDRESS_CHANGE AddressChangeAction;
+ ETH_FILTER_CHANGE FilterChangeAction;
+ ETH_DEFERRED_CLOSE CloseAction;
+ UINT MaxMulticastAddresses;
+ UINT NumAddresses;
+ UCHAR AdapterAddress[ETH_LENGTH_OF_ADDRESS];
+ UINT OldCombinedPacketFilter;
+ CHAR (*OldMCastAddressBuf)[ETH_LENGTH_OF_ADDRESS];
+ UINT OldNumAddresses;
+ PETH_BINDING_INFO DirectedList;
+ PETH_BINDING_INFO BMList;
+ PETH_BINDING_INFO MCastSet;
+#if defined(NDIS_WRAPPER)
+ UINT NumOpens;
+ PVOID BindListLock;
+#endif
+} ETHI_FILTER, *PETHI_FILTER;
+
+
BOOLEAN
-STDCALL
+NTAPI
EthCreateFilter(
IN UINT MaximumMulticastAddresses,
IN PUCHAR AdapterAddress,
OUT PETH_FILTER * Filter);
VOID
-STDCALL
+NTAPI
EthFilterDprIndicateReceive(
IN PETH_FILTER Filter,
IN NDIS_HANDLE MacReceiveContext,
IN UINT PacketSize);
VOID
-STDCALL
+NTAPI
EthFilterDprIndicateReceiveComplete(
IN PETH_FILTER Filter);
#ifndef __NDISSYS_H
#define __NDISSYS_H
-#define NDIS50 1 /* Use NDIS 5.0 structures by default */
-
-#ifdef _MSC_VER
-#include <basetsd.h>
-#include <ntddk.h>
-#include <windef.h>
+typedef unsigned long NDIS_STATS;
#include <ndis.h>
+#include <xfilter.h>
+#include <afilter.h>
+
+#if _MSC_VER
+/* FIXME: These were removed and are no longer used! */
+#define NdisWorkItemHalt NdisMaxWorkItems
+#define NdisWorkItemSendLoopback (NdisMaxWorkItems + 1)
#else /* _MSC_VER */
-#include <ddk/ntddk.h>
-#include <ddk/ntifs.h>
-#include <ddk/ndis.h>
-#include <ddk/xfilter.h>
-#include <ddk/afilter.h>
+/* FIXME: We miss the ATM headers. */
typedef struct _ATM_ADDRESS *PATM_ADDRESS;
#endif /* _MSC_VER */
+/* FIXME: This should go away once NDK will be compatible with MS DDK headers. */
+#if _MSC_VER
+NTSTATUS NTAPI ZwDuplicateObject(IN HANDLE, IN HANDLE, IN HANDLE, OUT PHANDLE, IN ACCESS_MASK, IN ULONG, IN ULONG);
+#else
+#include <ndk/ntndk.h>
+#endif
+
+#define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
+
struct _ADAPTER_BINDING;
typedef struct _INTERNAL_NDIS_MINIPORT_WORK_ITEM {
NDIS_MINIPORT_WORK_ITEM RealWorkItem;
} INTERNAL_NDIS_MINIPORT_WORK_ITEM, *PINTERNAL_NDIS_MINIPORT_WORK_ITEM;
+typedef struct _NDISI_PACKET_POOL {
+ NDIS_SPIN_LOCK SpinLock;
+ struct _NDIS_PACKET *FreeList;
+ UINT PacketLength;
+ UCHAR Buffer[1];
+} NDISI_PACKET_POOL, * PNDISI_PACKET_POOL;
+
#include "miniport.h"
#include "protocol.h"
#include <debug.h>
/* Exported functions */
-#ifdef _MSC_VER
-#define EXPORT __declspec(dllexport)
-#else
-#define EXPORT STDCALL
+#ifndef EXPORT
+#define EXPORT NTAPI
#endif
#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
NdisIMSwitchToMiniport@8
NdisInitAnsiString@8
NdisInitializeEvent@4
-NdisInitializeInterrupt@40
NdisInitializeReadWriteLock@4
NdisInitializeString@8
NdisInitializeTimer@12
NdisReinitializePacket@4
NdisRegisterAdapter@24
NdisRegisterAdapterShutdownHandler@12
-NdisRegisterMac@24
NdisRegisterProtocol@16
;NdisRegisterTdiCallBack ?
NdisReleaseAdapterResources@4
NdisReleaseReadWriteLock@8
NdisReleaseSpinLock@4
-NdisRemoveInterrupt@4
NdisRequest@12
NdisReset@8
NdisResetEvent@4
<include base="ndis">include</include>
<define name="NDIS_WRAPPER" />
<define name="NDIS50" />
+ <define name="NDIS51" />
<define name="NDIS50_MINIPORT" />
- <define name="BINARY_COMPATIBLE" />
- <define name="__USE_W32API" />
+ <define name="NDIS51_MINIPORT" />
<library>ntoskrnl</library>
<library>hal</library>
<directory name="include">
/*
* @unimplemented
*/
+#undef NdisCompleteBufferPhysicalMapping
VOID
EXPORT
NdisCompleteBufferPhysicalMapping(
/*
* @unimplemented
*/
+#undef NdisCompleteRequest
VOID
EXPORT
NdisCompleteRequest(
/*
* @unimplemented
*/
+#undef NdisCompleteReset
VOID
EXPORT
NdisCompleteReset(
/*
* @unimplemented
*/
+#undef NdisCompleteSend
VOID
EXPORT
NdisCompleteSend(
/*
* @unimplemented
*/
+#undef NdisCompleteTransferData
VOID
EXPORT
NdisCompleteTransferData(
/*
* @unimplemented
*/
+#undef NdisIndicateReceive
VOID
EXPORT
NdisIndicateReceive(
/*
* @unimplemented
*/
+#undef NdisIndicateReceiveComplete
VOID
EXPORT
NdisIndicateReceiveComplete(
/*
* @unimplemented
*/
+#undef NdisIndicateStatus
VOID
EXPORT
NdisIndicateStatus(
/*
* @unimplemented
*/
+#undef NdisIndicateStatusComplete
VOID
EXPORT
NdisIndicateStatusComplete(
/*
* @unimplemented
*/
+#undef NdisReadDmaCounter
ULONG
EXPORT
NdisReadDmaCounter(
/*
* @unimplemented
*/
+#undef NdisStartBufferPhysicalMapping
VOID
EXPORT
NdisStartBufferPhysicalMapping(
/*
* @unimplemented
*/
-BOOLEAN
-EXPORT
-NdisSynchronizeWithInterrupt(
- IN PNDIS_INTERRUPT Interrupt,
- IN PVOID SynchronizeFunction,
- IN PVOID SynchronizeContext)
-{
- UNIMPLEMENTED
-
- return FALSE;
-}
-
-
-/*
- * @unimplemented
- */
+#undef NdisUnmapIoSpace
VOID
EXPORT
NdisUnmapIoSpace(
}
-/*
- * @unimplemented
- */
-VOID
-EXPORT
-NdisInitializeInterrupt(
- OUT PNDIS_STATUS Status,
- IN OUT PNDIS_INTERRUPT Interrupt,
- IN NDIS_HANDLE NdisAdapterHandle,
- IN PNDIS_INTERRUPT_SERVICE InterruptServiceRoutine,
- IN PVOID InterruptContext,
- IN PNDIS_DEFERRED_PROCESSING DeferredProcessingRoutine,
- IN UINT InterruptVector,
- IN UINT InterruptLevel,
- IN BOOLEAN SharedInterrupt,
- IN NDIS_INTERRUPT_MODE InterruptMode)
-/*
- * FUNCTION:
- * ARGUMENTS:
- * NOTES:
- * NDIS 4.0
- */
-{
- UNIMPLEMENTED
-}
-
-
/*
* @unimplemented
*/
}
-/*
- * @unimplemented
- */
-VOID
-EXPORT
-NdisRegisterMac(
- OUT PNDIS_STATUS Status,
- OUT PNDIS_HANDLE NdisMacHandle,
- IN NDIS_HANDLE NdisWrapperHandle,
- IN NDIS_HANDLE MacMacContext,
- IN PNDIS_MAC_CHARACTERISTICS MacCharacteristics,
- IN UINT CharacteristicsLength)
-/*
- * FUNCTION:
- * ARGUMENTS:
- * NOTES:
- * NDIS 4.0
- */
-{
- UNIMPLEMENTED
-}
-
-
/*
* @unimplemented
*/
}
-/*
- * @unimplemented
- */
-VOID
-EXPORT
-NdisRemoveInterrupt(
- IN PNDIS_INTERRUPT Interrupt)
-/*
- * FUNCTION:
- * ARGUMENTS:
- * NOTES:
- * NDIS 4.0
- */
-{
- UNIMPLEMENTED
-}
-
-
/*
* @unimplemented
*/
-### THIS FILE IS OFFICIALLY OBSOLETE ###
-### SEE ../README.TXT ###
-
TARGETNAME=ndis
-TARGETPATH=..\objects
+TARGETPATH=obj
TARGETTYPE=EXPORT_DRIVER
-TARGETLIBS=
-
-C_DEFINES=$(C_DEFINES) -DUNICODE -DNDIS_WRAPPER -DBINARY_COMPATIBLE=1
+C_DEFINES=-DNDIS_WRAPPER=1 -DNDIS50=1 -DNDIS51=1 -DNDIS50_MINIPORT=1 -DNDIS51_MINIPORT=1
-INCLUDES=..\include;..\..\..\..\include\net;$(BASEDIR)\INC
+INCLUDES=..\include;..\..\..\..\include;..\..\..\..\include\reactos
-SOURCES= 40gone.c \
- 50gone.c \
- buffer.c \
- cl.c \
- cm.c \
- co.c \
- control.c \
- hardware.c \
- io.c \
- main.c \
- memory.c \
- miniport.c \
- protocol.c \
- string.c \
- stubs.c \
- time.c \
- RESOURCE.RC
+SOURCES= 40gone.c 50gone.c buffer.c cl.c cm.c co.c config.c control.c \
+ efilter.c hardware.c io.c main.c memory.c miniport.c protocol.c \
+ string.c stubs.c time.c
MSC_WARNING_LEVEL=/W3 /WX
+
+DLLDEF=$(O)/ndis.def
__inline ULONG SkipToOffset(
- PNDIS_BUFFER Buffer,
- UINT Offset,
- PUCHAR *Data,
- PUINT Size)
+ IN PNDIS_BUFFER Buffer,
+ IN UINT Offset,
+ IN OUT PUCHAR *Data,
+ IN OUT PUINT Size)
/*
* FUNCTION: Skips Offset bytes into a buffer chain
* ARGUMENTS:
if (SkipToOffset(DstBuffer, DstOffset, &DstData, &DstSize) == 0xFFFFFFFF)
return 0;
/* Skip SrcOffset bytes in the source packet */
- NdisGetFirstBufferFromPacket(SrcPacket, &SrcBuffer, (PVOID)&SrcData, &SrcSize, &Total);
+ NdisGetFirstBufferFromPacket(SrcPacket, &SrcBuffer, (PVOID*)&SrcData, &SrcSize, &Total);
if (SkipToOffset(SrcBuffer, SrcOffset, &SrcData, &SrcSize) == 0xFFFFFFFF)
return 0;
/* Copy the data */
/*
* @implemented
*/
+#undef NdisAdjustBufferLength
VOID
EXPORT
NdisAdjustBufferLength(
/*
* @implemented
*/
+#undef NDIS_BUFFER_TO_SPAN_PAGES
ULONG
EXPORT
NDIS_BUFFER_TO_SPAN_PAGES(
{
KIRQL OldIrql;
PNDIS_PACKET Temp;
- PNDIS_PACKET_POOL Pool = (PNDIS_PACKET_POOL)PoolHandle;
+ PNDISI_PACKET_POOL Pool = (PNDISI_PACKET_POOL)PoolHandle;
NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X) Packet (0x%X) PoolHandle (0x%X).\n",
Status, Packet, PoolHandle));
* NDIS 5.0
*/
{
- PNDIS_PACKET_POOL Pool;
+ PNDISI_PACKET_POOL Pool;
UINT Size, Length, i;
PNDIS_PACKET Packet, NextPacket;
}
Length = sizeof(NDIS_PACKET) + ProtocolReservedLength;
- Size = sizeof(NDIS_PACKET_POOL) + Length * NumberOfDescriptors;
+ Size = sizeof(NDISI_PACKET_POOL) + Length * NumberOfDescriptors;
Pool = ExAllocatePool(NonPagedPool, Size);
if (Pool)
/*
* @implemented
*/
+#undef NdisBufferLength
ULONG
EXPORT
NdisBufferLength(
/*
* @unimplemented
*/
+#undef NdisBufferVirtualAddress
PVOID
EXPORT
NdisBufferVirtualAddress(
*BytesCopied = 0;
/* Skip DestinationOffset bytes in the destination packet */
- NdisGetFirstBufferFromPacket(Destination, &DstBuffer, (PVOID)&DstData, &DstSize, &Total);
+ NdisGetFirstBufferFromPacket(Destination, &DstBuffer, (PVOID*)&DstData, &DstSize, &Total);
if (SkipToOffset(DstBuffer, DestinationOffset, &DstData, &DstSize) == 0xFFFFFFFF)
return;
/* Skip SourceOffset bytes in the source packet */
- NdisGetFirstBufferFromPacket(Source, &SrcBuffer, (PVOID)&SrcData, &SrcSize, &Total);
+ NdisGetFirstBufferFromPacket(Source, &SrcBuffer, (PVOID*)&SrcData, &SrcSize, &Total);
if (SkipToOffset(SrcBuffer, SourceOffset, &SrcData, &SrcSize) == 0xFFFFFFFF)
return;
/*
* @implemented
*/
+#undef NdisFreeBuffer
VOID
EXPORT
NdisFreeBuffer(
NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet));
- KeAcquireSpinLock(&Packet->Private.Pool->SpinLock.SpinLock, &OldIrql);
- Packet->Private.Head = (PNDIS_BUFFER)Packet->Private.Pool->FreeList;
- Packet->Private.Pool->FreeList = Packet;
- KeReleaseSpinLock(&Packet->Private.Pool->SpinLock.SpinLock, OldIrql);
+ KeAcquireSpinLock(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock, &OldIrql);
+ Packet->Private.Head = (PNDIS_BUFFER)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList;
+ ((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet;
+ KeReleaseSpinLock(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock, OldIrql);
}
/*
* @implemented
*/
+#undef NdisGetBufferPhysicalArraySize
VOID
EXPORT
NdisGetBufferPhysicalArraySize(
/*
* @implemented
*/
+#undef NdisGetFirstBufferFromPacket
VOID
EXPORT
NdisGetFirstBufferFromPacket(
/*
* @implemented
*/
+#undef NdisQueryBuffer
VOID
EXPORT
NdisQueryBuffer(
/*
* @implemented
*/
+#undef NdisQueryBufferSafe
VOID
EXPORT
NdisQueryBufferSafe(
/*
* @implemented
*/
+#undef NdisQueryBufferOffset
VOID
EXPORT
NdisQueryBufferOffset(
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClAddParty(
IN NDIS_HANDLE NdisVcHandle,
IN NDIS_HANDLE ProtocolPartyContext,
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClCloseAddressFamily(
IN NDIS_HANDLE NdisAfHandle)
/*
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClCloseCall(
IN NDIS_HANDLE NdisVcHandle,
IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClDeregisterSap(
IN NDIS_HANDLE NdisSapHandle)
/*
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClDropParty(
IN NDIS_HANDLE NdisPartyHandle,
IN PVOID Buffer OPTIONAL,
* @unimplemented
*/
VOID
-DDKAPI
+EXPORT
NdisClIncomingCallComplete(
IN NDIS_STATUS Status,
IN NDIS_HANDLE NdisVcHandle,
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClMakeCall(
IN NDIS_HANDLE NdisVcHandle,
IN OUT PCO_CALL_PARAMETERS CallParameters,
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClModifyCallQoS(
IN NDIS_HANDLE NdisVcHandle,
IN PCO_CALL_PARAMETERS CallParameters)
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClOpenAddressFamily(
IN NDIS_HANDLE NdisBindingHandle,
IN PCO_ADDRESS_FAMILY AddressFamily,
* @unimplemented
*/
NDIS_STATUS
-DDKAPI
+EXPORT
NdisClRegisterSap(
IN NDIS_HANDLE NdisAfHandle,
IN NDIS_HANDLE ProtocolSapContext,
/*
* @implemented
*/
+#undef NdisReinitializePacket
VOID
EXPORT
NdisReinitializePacket(
/*
* @implemented
*/
+#undef NdisAcquireSpinLock
VOID
EXPORT
NdisAcquireSpinLock(
/*
* @implemented
*/
+#undef NdisAllocateSpinLock
VOID
EXPORT
NdisAllocateSpinLock(
/*
* @implemented
*/
+#undef NdisDprAcquireSpinLock
VOID
EXPORT
NdisDprAcquireSpinLock(
/*
* @implemented
*/
+#undef NdisDprReleaseSpinLock
VOID
EXPORT
NdisDprReleaseSpinLock(
/*
* @implemented
*/
+#undef NdisFreeSpinLock
VOID
EXPORT
NdisFreeSpinLock(
/*
* @implemented
*/
+#undef NdisReleaseSpinLock
VOID
EXPORT
NdisReleaseSpinLock(
*/
#include "ndissys.h"
+#include "efilter.h"
BOOLEAN
-EXPORT
+NTAPI
EthCreateFilter(
IN UINT MaximumMulticastAddresses,
IN PUCHAR AdapterAddress,
* shouldn't be problem.
*/
{
- PETH_FILTER NewFilter;
+ PETHI_FILTER NewFilter;
- NewFilter = ExAllocatePool(NonPagedPool, sizeof(ETH_FILTER));
+ NewFilter = ExAllocatePool(NonPagedPool, sizeof(ETHI_FILTER));
if (NewFilter != NULL)
{
- RtlZeroMemory(NewFilter, sizeof(ETH_FILTER));
+ RtlZeroMemory(NewFilter, sizeof(ETHI_FILTER));
NewFilter->MaxMulticastAddresses = MaximumMulticastAddresses;
RtlCopyMemory(NewFilter->AdapterAddress, AdapterAddress, ETH_LENGTH_OF_ADDRESS);
- *Filter = NewFilter;
+ *Filter = (PETH_FILTER)NewFilter;
return TRUE;
}
return FALSE;
* in the boot process with Filter NULL. We need to investigate whether
* this should be handled or not allowed. */
if( !Filter ) return;
- MiniIndicateData((PLOGICAL_ADAPTER)Filter->Miniport,
+ MiniIndicateData((PLOGICAL_ADAPTER)((PETHI_FILTER)Filter)->Miniport,
MacReceiveContext,
HeaderBuffer,
HeaderBufferSize,
if( !Filter ) return;
- Adapter = (PLOGICAL_ADAPTER)Filter->Miniport;
+ Adapter = (PLOGICAL_ADAPTER)((PETHI_FILTER)Filter)->Miniport;
NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n"));
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry);
(*AdapterBinding->ProtocolBinding->Chars.ReceiveCompleteHandler)(
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext);
+ AdapterBinding->NdisOpenBlock.ProtocolBindingContext);
CurrentEntry = CurrentEntry->Flink;
}
*
*/
-#include <roscfg.h>
#include "ndissys.h"
\f
* 3 Oct 2003 Vizzini - Formatting and minor bugfixes
*/
-#include <roscfg.h>
#include "ndissys.h"
\f
-VOID STDCALL HandleDeferredProcessing(
+VOID NTAPI HandleDeferredProcessing(
IN PKDPC Dpc,
IN PVOID DeferredContext,
IN PVOID SystemArgument1,
}
\f
-BOOLEAN STDCALL ServiceRoutine(
+BOOLEAN NTAPI ServiceRoutine(
IN PKINTERRUPT Interrupt,
IN PVOID ServiceContext)
/*
/*
* @unimplemented
*/
+#undef NdisFlushBuffer
VOID
EXPORT
NdisFlushBuffer(
/*
* @unimplemented
*/
+#undef NdisGetCacheFillSize
ULONG
EXPORT
NdisGetCacheFillSize(
}
\f
-IO_ALLOCATION_ACTION STDCALL NdisMapRegisterCallback (
+IO_ALLOCATION_ACTION NTAPI NdisMapRegisterCallback (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID MapRegisterBase,
}
memset(Adapter->NdisMiniportBlock.MapRegisters, 0, BaseMapRegistersNeeded * sizeof(MAP_REGISTER_ENTRY));
- Adapter->NdisMiniportBlock.BaseMapRegistersNeeded = BaseMapRegistersNeeded;
+ Adapter->NdisMiniportBlock.BaseMapRegistersNeeded = (USHORT)BaseMapRegistersNeeded;
while(BaseMapRegistersNeeded)
{
NDIS_DbgPrint(MAX_TRACE, ("iterating, basemapregistersneeded = %d\n", BaseMapRegistersNeeded));
BaseMapRegistersNeeded--;
- Adapter->NdisMiniportBlock.CurrentMapRegister = BaseMapRegistersNeeded;
+ Adapter->NdisMiniportBlock.CurrentMapRegister = (USHORT)BaseMapRegistersNeeded;
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
{
NtStatus = AdapterObject->DmaOperations->AllocateAdapterChannel(
/*
* @unimplemented
*/
+#undef NdisMCompleteDmaTransfer
VOID
EXPORT
NdisMCompleteDmaTransfer(
/*
* @unimplemented
*/
+#undef NdisMSetupDmaTransfer
VOID
EXPORT
NdisMSetupDmaTransfer(
* 3 Oct 2003 Vizzini - formatting and minor bugfixing
*/
-#include <roscfg.h>
#include "ndissys.h"
#ifdef DBG
/* See debug.h for debug/trace constants */
-DWORD DebugTraceLevel = MIN_TRACE;
-//DWORD DebugTraceLevel = DEBUG_ULTRA;
+ULONG DebugTraceLevel = MIN_TRACE;
+//ULONG DebugTraceLevel = DEBUG_ULTRA;
#endif /* DBG */
\f
-VOID STDCALL MainUnload(
+VOID NTAPI MainUnload(
PDRIVER_OBJECT DriverObject)
/*
* FUNCTION: Unloads the driver
\f
NTSTATUS
-STDCALL
+NTAPI
DriverEntry(
PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath)
* @implemented
*/
VOID
-CDECL
+_cdecl
NdisWriteErrorLogEntry(
IN NDIS_HANDLE NdisAdapterHandle,
IN NDIS_ERROR_CODE ErrorCode,
/*
* @unimplemented
*/
+#undef NdisCreateLookaheadBufferFromSharedMemory
VOID
EXPORT
NdisCreateLookaheadBufferFromSharedMemory(
/*
* @unimplemented
*/
+#undef NdisDestroyLookaheadBufferFromSharedMemory
VOID
EXPORT
NdisDestroyLookaheadBufferFromSharedMemory(
}
\f
-/*
- * @implemented
- */
VOID
-STDCALL
+NTAPI
NdisMFreeSharedMemoryPassive(
PVOID Context)
/*
* 20 Aug 2003 vizzini - DMA support
* 3 Oct 2003 vizzini - SendPackets support
*/
-#include <roscfg.h>
+
#include "ndissys.h"
#include "efilter.h"
(MID_TRACE,
("XXX (%x) %x %x %x %x %x %x %x XXX\n",
*AdapterBinding->ProtocolBinding->Chars.ReceiveHandler,
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext,
+ AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
MacReceiveContext,
HeaderBuffer,
HeaderBufferSize,
/* call the receive handler */
(*AdapterBinding->ProtocolBinding->Chars.ReceiveHandler)(
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext,
+ AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
MacReceiveContext,
HeaderBuffer,
HeaderBufferSize,
}
\f
-VOID STDCALL
+VOID NTAPI
MiniIndicateReceivePacket(
IN NDIS_HANDLE Miniport,
IN PPNDIS_PACKET PacketArray,
}
\f
-VOID STDCALL
+VOID NTAPI
MiniResetComplete(
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_STATUS Status,
\f
-VOID STDCALL
+VOID NTAPI
MiniRequestComplete(
IN PADAPTER_BINDING AdapterBinding,
IN PNDIS_REQUEST Request,
if( AdapterBinding->ProtocolBinding->Chars.RequestCompleteHandler ) {
(*AdapterBinding->ProtocolBinding->Chars.RequestCompleteHandler)(
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext,
+ AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
Request,
Status);
}
}
-VOID STDCALL
+VOID NTAPI
MiniSendComplete(
IN NDIS_HANDLE MiniportAdapterHandle,
IN PNDIS_PACKET Packet,
AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[0];
(*AdapterBinding->ProtocolBinding->Chars.SendCompleteHandler)(
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext,
+ AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
Packet,
Status);
}
-VOID STDCALL
+VOID NTAPI
MiniSendResourcesAvailable(
IN NDIS_HANDLE MiniportAdapterHandle)
{
}
-VOID STDCALL
+VOID NTAPI
MiniTransferDataComplete(
IN NDIS_HANDLE MiniportAdapterHandle,
IN PNDIS_PACKET Packet,
AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[0];
(*AdapterBinding->ProtocolBinding->Chars.SendCompleteHandler)(
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext,
+ AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
Packet,
Status);
}
}
\f
-VOID STDCALL MiniportDpc(
+VOID NTAPI MiniportDpc(
IN PKDPC Dpc,
IN PVOID DeferredContext,
IN PVOID SystemArgument1,
* ARGUMENTS: MiniportHandle: Handle passed into MiniportInitialize
*/
{
- NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportHandle;
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
+
if(Adapter->BugcheckContext->ShutdownHandler)
KeDeregisterBugCheckCallback(Adapter->BugcheckContext->CallbackRecord);
}
}
\f
-VOID STDCALL NdisIBugcheckCallback(
+VOID NTAPI NdisIBugcheckCallback(
IN PVOID Buffer,
IN ULONG Length)
/*
\f
NTSTATUS
-STDCALL
+NTAPI
NdisIForwardIrpAndWaitCompletionRoutine(
PDEVICE_OBJECT Fdo,
PIRP Irp,
\f
NTSTATUS
-STDCALL
+NTAPI
NdisIForwardIrpAndWait(PLOGICAL_ADAPTER Adapter, PIRP Irp)
{
KEVENT Event;
\f
NTSTATUS
-STDCALL
+NTAPI
NdisIPnPStartDevice(
IN PDEVICE_OBJECT DeviceObject,
PIRP Irp)
{
Success = EthCreateFilter(32, /* FIXME: Query this from miniport. */
Adapter->Address.Type.Medium802_3,
- &Adapter->NdisMiniportBlock.FilterDbs.EthDB);
+ &Adapter->NdisMiniportBlock.EthDB);
if (Success)
- Adapter->NdisMiniportBlock.FilterDbs.EthDB->Miniport = (PNDIS_MINIPORT_BLOCK)Adapter;
+ ((PETHI_FILTER)Adapter->NdisMiniportBlock.EthDB)->Miniport = (PNDIS_MINIPORT_BLOCK)Adapter;
else
NdisStatus = NDIS_STATUS_RESOURCES;
}
\f
NTSTATUS
-STDCALL
+NTAPI
NdisIPnPStopDevice(
IN PDEVICE_OBJECT DeviceObject,
PIRP Irp)
\f
NTSTATUS
-STDCALL
+NTAPI
NdisIDispatchPnp(
IN PDEVICE_OBJECT DeviceObject,
PIRP Irp)
\f
NTSTATUS
-STDCALL
+NTAPI
NdisIAddDevice(
IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT PhysicalDeviceObject)
/*
* @implemented
*/
+#undef NdisMResetComplete
VOID
EXPORT
NdisMResetComplete(
/*
* @implemented
*/
+#undef NdisMSendComplete
VOID
EXPORT
NdisMSendComplete(
/*
* @implemented
*/
+#undef NdisMSendResourcesAvailable
VOID
EXPORT
NdisMSendResourcesAvailable(
/*
* @implemented
*/
+#undef NdisMTransferDataComplete
VOID
EXPORT
NdisMTransferDataComplete(
* CSH 01/08-2000 Created
* 09-13-2003 Vizzini Updates for SendPackets support
*/
-#include <roscfg.h>
+
#include "ndissys.h"
#include <buffer.h>
-VOID
-EXPORT
-NdisMSendComplete(
- IN NDIS_HANDLE MiniportAdapterHandle,
- IN PNDIS_PACKET Packet,
- IN NDIS_STATUS Status);
-
#define SERVICES_KEY L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"
#define LINKAGE_KEY L"\\Linkage"
#define PARAMETERS_KEY L"\\Parameters\\"
}
\f
-NDIS_STATUS STDCALL
+NDIS_STATUS NTAPI
ProRequest(
IN NDIS_HANDLE MacBindingHandle,
IN PNDIS_REQUEST NdisRequest)
}
\f
-NDIS_STATUS STDCALL
+NDIS_STATUS NTAPI
ProReset(
IN NDIS_HANDLE MacBindingHandle)
{
}
\f
-NDIS_STATUS STDCALL
+NDIS_STATUS NTAPI
ProSend(
IN NDIS_HANDLE MacBindingHandle,
IN PNDIS_PACKET Packet)
}
\f
-VOID STDCALL
+VOID NTAPI
ProSendPackets(
IN NDIS_HANDLE NdisBindingHandle,
IN PPNDIS_PACKET PacketArray,
}
\f
-NDIS_STATUS STDCALL
+NDIS_STATUS NTAPI
ProTransferData(
IN NDIS_HANDLE MacBindingHandle,
IN NDIS_HANDLE MacReceiveContext,
AdapterBinding->ProtocolBinding = Protocol;
AdapterBinding->Adapter = Adapter;
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ProtocolBindingContext = ProtocolBindingContext;
+ AdapterBinding->NdisOpenBlock.ProtocolBindingContext = ProtocolBindingContext;
/* Set fields required by some NDIS macros */
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.BindingHandle = (NDIS_HANDLE)AdapterBinding;
+ AdapterBinding->NdisOpenBlock.BindingHandle = (NDIS_HANDLE)AdapterBinding;
/* Set handlers (some NDIS macros require these) */
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.RequestHandler = ProRequest;
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.ResetHandler = ProReset;
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.SendHandler = ProSend;
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.SendPacketsHandler = ProSendPackets;
- AdapterBinding->NdisOpenBlock.NdisCommonOpenBlock.TransferDataHandler = ProTransferData;
+ AdapterBinding->NdisOpenBlock.RequestHandler = ProRequest;
+ AdapterBinding->NdisOpenBlock.ResetHandler = ProReset;
+ AdapterBinding->NdisOpenBlock.SendHandler = ProSend;
+ AdapterBinding->NdisOpenBlock.SendPacketsHandler = ProSendPackets;
+ AdapterBinding->NdisOpenBlock.TransferDataHandler = ProTransferData;
#if 0
/* XXX this looks fishy */
/*
* @implemented
*/
+#undef NdisSend
VOID
EXPORT
NdisSend(
/*
* @implemented
*/
+#undef NdisSendPackets
VOID
EXPORT
NdisSendPackets(
/*
* @implemented
*/
+#undef NdisTransferData
VOID
EXPORT
NdisTransferData(
/*
* @implemented
*/
+#undef NdisAnsiStringToUnicodeString
NDIS_STATUS
EXPORT
NdisAnsiStringToUnicodeString(
/*
* @implemented
*/
+#undef NdisInitAnsiString
VOID
EXPORT
NdisInitAnsiString(
/*
* @implemented
*/
+#undef NdisInitUnicodeString
VOID
EXPORT
NdisInitUnicodeString(
/*
* @implemented
*/
+#undef NdisUnicodeStringToAnsiString
NDIS_STATUS
EXPORT
NdisUnicodeStringToAnsiString(
/*
* @implemented
*/
+#undef NdisUpcaseUnicodeString
NTSTATUS
EXPORT
NdisUpcaseUnicodeString(
typedef struct _NDIS_HANDLE_OBJECT
{
HANDLE FileHandle;
- BOOL Mapped;
+ BOOLEAN Mapped;
ULONG FileLength;
PVOID MapBuffer;
} NDIS_HANDLE_OBJECT, *PNDIS_HANDLE_OBJECT;
-inline
+__inline
PNDIS_HANDLE_OBJECT
NDIS_HANDLE_TO_POBJECT ( NDIS_HANDLE handle )
{
return (PNDIS_HANDLE_OBJECT)handle;
}
-inline
+__inline
NDIS_HANDLE
NDIS_POBJECT_TO_HANDLE ( PNDIS_HANDLE_OBJECT obj )
{
/*
* @unimplemented
*/
+#undef NdisMWanIndicateReceive
VOID
EXPORT
NdisMWanIndicateReceive(
/*
* @unimplemented
*/
+#undef NdisMWanIndicateReceiveComplete
VOID
EXPORT
NdisMWanIndicateReceiveComplete(
/*
* @unimplemented
*/
+#undef NdisMWanSendComplete
VOID
EXPORT
NdisMWanSendComplete(
/*
* @implemented
*/
+#undef NdisInterlockedPopEntrySList
PSINGLE_LIST_ENTRY
EXPORT
NdisInterlockedPopEntrySList(
/*
* @implemented
*/
+#undef NdisInterlockedPushEntrySList
PSINGLE_LIST_ENTRY
EXPORT
NdisInterlockedPushEntrySList(
#include "ndissys.h"
\f
-VOID STDCALL
+VOID NTAPI
MiniportTimerDpc(
PKDPC Dpc,
PVOID DeferredContext,
/*
* @implemented
*/
+#undef NdisGetCurrentSystemTime
VOID
EXPORT
NdisGetCurrentSystemTime (
/*
* @implemented
*/
+#undef NdisMSetTimer
VOID
EXPORT
NdisMSetTimer(
#define NDIS_GUID_UNICODE_STRING 0x00000008
#define NDIS_GUID_ARRAY 0x00000010
-
-typedef struct _NDIS_PACKET_POOL {
- NDIS_SPIN_LOCK SpinLock;
- struct _NDIS_PACKET *FreeList;
- UINT PacketLength;
- UCHAR Buffer[1];
-} NDIS_PACKET_POOL, * PNDIS_PACKET_POOL;
+typedef HANDLE PNDIS_PACKET_POOL;
/* NDIS_PACKET_PRIVATE.Flags constants */
#define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
#endif /* ARCNET */
-#define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
-
typedef struct _NDIS_LOG {
PNDIS_MINIPORT_BLOCK Miniport;
KSPIN_LOCK LogLock;
UCHAR LogBuf[1];
} NDIS_LOG, *PNDIS_LOG;
-typedef struct _FILTERDBS {
- _ANONYMOUS_UNION union {
- PETH_FILTER EthDB;
- PNULL_FILTER NullDB;
- } DUMMYUNIONNAME;
- PTR_FILTER TrDB;
- PFDDI_FILTER FddiDB;
#if ARCNET
+#define FILTERDBS_ARCNET_S \
PARC_FILTER ArcDB;
#else /* !ARCNET */
+#define FILTERDBS_ARCNET_S \
PVOID XXXDB;
#endif /* !ARCNET */
+
+#define FILTERDBS_S \
+ _ANONYMOUS_UNION union { \
+ PETH_FILTER EthDB; \
+ PNULL_FILTER NullDB; \
+ } DUMMYUNIONNAME; \
+ PTR_FILTER TrDB; \
+ PFDDI_FILTER FddiDB; \
+ FILTERDBS_ARCNET_S
+
+typedef struct _FILTERDBS {
+ FILTERDBS_S
} FILTERDBS, *PFILTERDBS;
USHORT CFHangCurrentTick;
NDIS_STATUS ResetStatus;
NDIS_HANDLE ResetOpen;
+#ifdef __cplusplus
FILTERDBS FilterDbs;
+#else
+ FILTERDBS_S
+#endif
FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler;
NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler;
NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler;
IN PPNDIS_PACKET PacketArray,
IN UINT NumberOfPackets);
-
-typedef struct _NDIS_COMMON_OPEN_BLOCK {
- PVOID MacHandle;
- NDIS_HANDLE BindingHandle;
- PNDIS_MINIPORT_BLOCK MiniportHandle;
- PNDIS_PROTOCOL_BLOCK ProtocolHandle;
- NDIS_HANDLE ProtocolBindingContext;
- PNDIS_OPEN_BLOCK MiniportNextOpen;
- PNDIS_OPEN_BLOCK ProtocolNextOpen;
- NDIS_HANDLE MiniportAdapterContext;
- BOOLEAN Reserved1;
- BOOLEAN Reserved2;
- BOOLEAN Reserved3;
- BOOLEAN Reserved4;
- PNDIS_STRING BindDeviceName;
- KSPIN_LOCK Reserved5;
- PNDIS_STRING RootDeviceName;
- _ANONYMOUS_UNION union {
- SEND_HANDLER SendHandler;
- WAN_SEND_HANDLER WanSendHandler;
- } DUMMYUNIONNAME;
- TRANSFER_DATA_HANDLER TransferDataHandler;
- SEND_COMPLETE_HANDLER SendCompleteHandler;
- TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler;
- RECEIVE_HANDLER ReceiveHandler;
- RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler;
- WAN_RECEIVE_HANDLER WanReceiveHandler;
- REQUEST_COMPLETE_HANDLER RequestCompleteHandler;
- RECEIVE_PACKET_HANDLER ReceivePacketHandler;
- SEND_PACKETS_HANDLER SendPacketsHandler;
- RESET_HANDLER ResetHandler;
- REQUEST_HANDLER RequestHandler;
- RESET_COMPLETE_HANDLER ResetCompleteHandler;
- STATUS_HANDLER StatusHandler;
- STATUS_COMPLETE_HANDLER StatusCompleteHandler;
#if defined(NDIS_WRAPPER)
- ULONG Flags;
- ULONG References;
- KSPIN_LOCK SpinLock;
- NDIS_HANDLE FilterHandle;
- ULONG ProtocolOptions;
- USHORT CurrentLookahead;
- USHORT ConnectDampTicks;
- USHORT DisconnectDampTicks;
- W_SEND_HANDLER WSendHandler;
- W_TRANSFER_DATA_HANDLER WTransferDataHandler;
- W_SEND_PACKETS_HANDLER WSendPacketsHandler;
- W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler;
- ULONG WakeUpEnable;
- PKEVENT CloseCompleteEvent;
- QUEUED_CLOSE QC;
- ULONG AfReferences;
+#define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \
+ ULONG Flags; \
+ ULONG References; \
+ KSPIN_LOCK SpinLock; \
+ NDIS_HANDLE FilterHandle; \
+ ULONG ProtocolOptions; \
+ USHORT CurrentLookahead; \
+ USHORT ConnectDampTicks; \
+ USHORT DisconnectDampTicks; \
+ W_SEND_HANDLER WSendHandler; \
+ W_TRANSFER_DATA_HANDLER WTransferDataHandler; \
+ W_SEND_PACKETS_HANDLER WSendPacketsHandler; \
+ W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
+ ULONG WakeUpEnable; \
+ PKEVENT CloseCompleteEvent; \
+ QUEUED_CLOSE QC; \
+ ULONG AfReferences; \
PNDIS_OPEN_BLOCK NextGlobalOpen;
-#endif /* _NDIS_ */
+#else
+#define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
+#endif
+
+#define NDIS_COMMON_OPEN_BLOCK_S \
+ PVOID MacHandle; \
+ NDIS_HANDLE BindingHandle; \
+ PNDIS_MINIPORT_BLOCK MiniportHandle; \
+ PNDIS_PROTOCOL_BLOCK ProtocolHandle; \
+ NDIS_HANDLE ProtocolBindingContext; \
+ PNDIS_OPEN_BLOCK MiniportNextOpen; \
+ PNDIS_OPEN_BLOCK ProtocolNextOpen; \
+ NDIS_HANDLE MiniportAdapterContext; \
+ BOOLEAN Reserved1; \
+ BOOLEAN Reserved2; \
+ BOOLEAN Reserved3; \
+ BOOLEAN Reserved4; \
+ PNDIS_STRING BindDeviceName; \
+ KSPIN_LOCK Reserved5; \
+ PNDIS_STRING RootDeviceName; \
+ _ANONYMOUS_UNION union { \
+ SEND_HANDLER SendHandler; \
+ WAN_SEND_HANDLER WanSendHandler; \
+ } DUMMYUNIONNAME; \
+ TRANSFER_DATA_HANDLER TransferDataHandler; \
+ SEND_COMPLETE_HANDLER SendCompleteHandler; \
+ TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
+ RECEIVE_HANDLER ReceiveHandler; \
+ RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
+ WAN_RECEIVE_HANDLER WanReceiveHandler; \
+ REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
+ RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
+ SEND_PACKETS_HANDLER SendPacketsHandler; \
+ RESET_HANDLER ResetHandler; \
+ REQUEST_HANDLER RequestHandler; \
+ RESET_COMPLETE_HANDLER ResetCompleteHandler; \
+ STATUS_HANDLER StatusHandler; \
+ STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
+ NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
+
+typedef struct _NDIS_COMMON_OPEN_BLOCK {
+ NDIS_COMMON_OPEN_BLOCK_S
} NDIS_COMMON_OPEN_BLOCK;
struct _NDIS_OPEN_BLOCK
{
- NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock;
+#ifdef __cplusplus
+ NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock;
+#else
+ NDIS_COMMON_OPEN_BLOCK_S
+#endif
#if defined(NDIS_WRAPPER)
- struct _NDIS_OPEN_CO
- {
- struct _NDIS_CO_AF_BLOCK * NextAf;
- W_CO_CREATE_VC_HANDLER MiniportCoCreateVcHandler;
- W_CO_REQUEST_HANDLER MiniportCoRequestHandler;
- CO_CREATE_VC_HANDLER CoCreateVcHandler;
- CO_DELETE_VC_HANDLER CoDeleteVcHandler;
- PVOID CmActivateVcCompleteHandler;
- PVOID CmDeactivateVcCompleteHandler;
- PVOID CoRequestCompleteHandler;
- LIST_ENTRY ActiveVcHead;
- LIST_ENTRY InactiveVcHead;
- LONG PendingAfNotifications;
- PKEVENT AfNotifyCompleteEvent;
- };
+ struct _NDIS_OPEN_CO
+ {
+ struct _NDIS_CO_AF_BLOCK * NextAf;
+ W_CO_CREATE_VC_HANDLER MiniportCoCreateVcHandler;
+ W_CO_REQUEST_HANDLER MiniportCoRequestHandler;
+ CO_CREATE_VC_HANDLER CoCreateVcHandler;
+ CO_DELETE_VC_HANDLER CoDeleteVcHandler;
+ PVOID CmActivateVcCompleteHandler;
+ PVOID CmDeactivateVcCompleteHandler;
+ PVOID CoRequestCompleteHandler;
+ LIST_ENTRY ActiveVcHead;
+ LIST_ENTRY InactiveVcHead;
+ LONG PendingAfNotifications;
+ PKEVENT AfNotifyCompleteEvent;
+ };
#endif /* _NDIS_ */
};