--- /dev/null
+DIRS= ndis
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: include/buffer.h
+ * PURPOSE: Buffer management routine definitions
+ */
+#ifndef __BUFFER_H
+#define __BUFFER_H
+
+#include <ndissys.h>
+
+
+/* FIXME: Possibly move this to ntddk.h */
+typedef struct _NETWORK_HEADER
+{
+ MDL Mdl; /* Memory Descriptor List */
+ struct _NETWORK_HEADER *Next; /* Link to next NDIS buffer in pool */
+ struct _NDIS_BUFFER_POOL *BufferPool; /* Link to NDIS buffer pool */
+} NETWORK_HEADER, *PNETWORK_HEADER;
+
+typedef struct _NDIS_BUFFER_POOL
+{
+ KSPIN_LOCK SpinLock;
+ PNETWORK_HEADER FreeList;
+ NETWORK_HEADER Buffers[0];
+} NDIS_BUFFER_POOL, *PNDIS_BUFFER_POOL;
+
+#endif /* __BUFFER_H */
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: include/debug.h
+ * PURPOSE: Debugging support macros
+ * DEFINES: DBG - Enable debug output
+ * NASSERT - Disable assertions
+ */
+#ifndef __DEBUG_H
+#define __DEBUG_H
+
+#define NORMAL_MASK 0x000000FF
+#define SPECIAL_MASK 0xFFFFFF00
+#define MIN_TRACE 0x00000001
+#define MID_TRACE 0x00000002
+#define MAX_TRACE 0x00000003
+
+#define DEBUG_REFCOUNT 0x00000100
+#define DEBUG_MINIPORT 0x00000200
+#define DEBUG_PROTOCOL 0x00000400
+#define DEBUG_ULTRA 0xFFFFFFFF
+
+#ifdef DBG
+
+extern DWORD DebugTraceLevel;
+
+#ifdef _MSC_VER
+
+#define NDIS_DbgPrint(_t_, _x_) \
+ if (((DebugTraceLevel & NORMAL_MASK) >= _t_) || \
+ ((DebugTraceLevel & _t_) > NORMAL_MASK)) { \
+ DbgPrint("(%s:%d) ", __FILE__, __LINE__); \
+ DbgPrint _x_ ; \
+ }
+
+#else /* _MSC_VER */
+
+#define NDIS_DbgPrint(_t_, _x_) \
+ if (((DebugTraceLevel & NORMAL_MASK) >= _t_) || \
+ ((DebugTraceLevel & _t_) > NORMAL_MASK)) { \
+ DbgPrint("(%s:%d)(%s) ", __FILE__, __LINE__, __FUNCTION__); \
+ DbgPrint _x_ ; \
+ }
+
+#endif /* _MSC_VER */
+
+
+#ifdef ASSERT
+#undef ASSERT
+#endif
+
+#ifdef NASSERT
+#define ASSERT(x)
+#else /* NASSERT */
+#define ASSERT(x) if (!(x)) { NDIS_DbgPrint(MIN_TRACE, ("Assertion "#x" failed at %s:%d\n", __FILE__, __LINE__)); KeBugCheck(0); }
+#endif /* NASSERT */
+
+#define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
+
+#else /* DBG */
+
+#define NDIS_DbgPrint(_t_, _x_)
+
+#define ASSERT_IRQL(x)
+#define ASSERT(x)
+
+#endif /* DBG */
+
+
+#define assert(x) ASSERT(x)
+#define assert_irql(x) ASSERT_IRQL(x)
+
+
+#ifdef _MSC_VER
+
+#define UNIMPLEMENTED \
+ NDIS_DbgPrint(MIN_TRACE, ("The function at %s:%d is unimplemented.\n", __FILE__, __LINE__));
+
+#else /* _MSC_VER */
+
+#define UNIMPLEMENTED \
+ NDIS_DbgPrint(MIN_TRACE, ("(%s) at (%s:%d) is unimplemented.\n", __FUNCTION__, __FILE__, __LINE__));
+
+#endif /* _MSC_VER */
+
+
+#define CHECKPOINT \
+ do { NDIS_DbgPrint(MIN_TRACE, ("%s:%d\n", __FILE__, __LINE__)); } while(0);
+
+#endif /* __DEBUG_H */
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/miniport.h
+ * PURPOSE: Definitions for routines used by NDIS miniport drivers
+ */
+
+#ifndef __MINIPORT_H
+#define __MINIPORT_H
+
+#include <ndissys.h>
+
+
+/* Information about a miniport */
+typedef struct _MINIPORT_DRIVER {
+ LIST_ENTRY ListEntry; /* Entry on global list */
+ KSPIN_LOCK Lock; /* Protecting spin lock */
+ ULONG RefCount; /* Reference count */
+ NDIS_MINIPORT_CHARACTERISTICS Chars; /* Miniport characteristics */
+ WORK_QUEUE_ITEM WorkItem; /* Work item */
+ PDRIVER_OBJECT DriverObject; /* Driver object of miniport */
+ NDIS_STRING RegistryPath; /* Registry path of miniport */
+ LIST_ENTRY AdapterListHead; /* Adapters created by miniport */
+} MINIPORT_DRIVER, *PMINIPORT_DRIVER;
+
+#define GET_MINIPORT_DRIVER(Handle)((PMINIPORT_DRIVER)Handle)
+
+/* Information about a logical adapter */
+typedef struct _LOGICAL_ADAPTER {
+ LIST_ENTRY ListEntry; /* Entry on global list */
+ LIST_ENTRY MiniportListEntry; /* Entry on miniport driver list */
+ KSPIN_LOCK Lock; /* Protecting spin lock */
+ ULONG RefCount; /* Reference count */
+ PMINIPORT_DRIVER Miniport; /* Miniport owning this adapter */
+ UNICODE_STRING DeviceName; /* Device name of this adapter */
+ PDEVICE_OBJECT DeviceObject; /* Device object of adapter */
+ PVOID MiniportAdapterContext; /* Adapter context for miniport */
+ ULONG Attributes; /* Attributes of adapter */
+ NDIS_INTERFACE_TYPE AdapterType; /* Type of adapter interface */
+ /* TRUE if the miniport has called NdisSetAttributes(Ex) for this adapter */
+ BOOLEAN AttributesSet;
+ PNDIS_MINIPORT_INTERRUPT InterruptObject; /* Interrupt object for adapter */
+ PVOID QueryBuffer; /* Buffer to use for queries */
+ ULONG QueryBufferLength; /* Length of QueryBuffer */
+} LOGICAL_ADAPTER, *PLOGICAL_ADAPTER;
+
+#define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
+
+
+extern LIST_ENTRY MiniportListHead;
+extern KSPIN_LOCK MiniportListLock;
+extern LIST_ENTRY AdapterListHead;
+extern KSPIN_LOCK AdapterListLock;
+
+PLOGICAL_ADAPTER MiniLocateDevice(
+ PNDIS_STRING AdapterName);
+
+NDIS_STATUS MiniQueryInformation(
+ PLOGICAL_ADAPTER Adapter,
+ NDIS_OID Oid,
+ ULONG Size,
+ PULONG BytesWritten);
+
+#endif /* __MINIPORT_H */
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndissys.h
+ * PURPOSE: NDIS library definitions
+ * NOTES: Spin lock acquire order:
+ * - Miniport list lock
+ * - Adapter list lock
+ */
+#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>
+#include <ndis.h>
+#else /* _MSC_VER */
+#include <ddk/ntddk.h>
+#include <net/ndis.h>
+#endif /* _MSC_VER */
+
+#include <debug.h>
+
+
+#ifndef _MSC_VER
+/* FIXME: The following should be moved to ntddk.h */
+
+/* i386 specific constants */
+
+/* Page size for the Intel 386 is 4096 */
+#define PAGE_SIZE (ULONG)0x1000
+
+/* 4096 is 2^12. Used to find the virtual page number from a virtual address */
+#define PAGE_SHIFT 12L
+
+/*
+ * ULONG ADDRESS_AND_SIZE_TO_SPAN_PAGES(
+ * IN PVOID Va,
+ * IN ULONG Size);
+ */
+#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size) \
+ ((((ULONG)((ULONG)(Size) - 1) >> PAGE_SHIFT) + \
+ (((((ULONG)(Size - 1) & (PAGE_SIZE - 1)) + \
+ ((ULONG)Va & (PAGE_SIZE - 1)))) >> PAGE_SHIFT)) + 1)
+
+/*
+ * ULONG MmGetMdlByteCount(
+ * IN PMDL Mdl)
+ */
+#define MmGetMdlByteCount(Mdl) \
+ ((Mdl)->ByteCount)
+
+#endif
+
+
+/* Exported functions */
+#ifdef _MSC_VER
+#define EXPORT __declspec(dllexport)
+#else
+#define EXPORT STDCALL
+#endif
+
+
+#ifdef DBG
+
+#define DEBUG_REFCHECK(Object) { \
+ if ((Object)->RefCount <= 0) { \
+ NDIS_DbgPrint(MIN_TRACE, ("Object at (0x%X) has invalid reference count (%d).\n", \
+ (Object), (Object)->RefCount)); \
+ } \
+}
+
+#else
+
+#define DEBUG_REFCHECK(Object)
+
+#endif
+
+
+/*
+ * VOID ReferenceObject(
+ * PVOID Object)
+ */
+#define ReferenceObject(Object) \
+{ \
+ DEBUG_REFCHECK(Object); \
+ NDIS_DbgPrint(DEBUG_REFCOUNT, ("Referencing object at (0x%X). RefCount (%d).\n", \
+ (Object), (Object)->RefCount)); \
+ \
+ InterlockedIncrement(&((Object)->RefCount)); \
+}
+
+/*
+ * VOID DereferenceObject(
+ * PVOID Object)
+ */
+#define DereferenceObject(Object) \
+{ \
+ DEBUG_REFCHECK(Object); \
+ NDIS_DbgPrint(DEBUG_REFCOUNT, ("Dereferencing object at (0x%X). RefCount (%d).\n", \
+ (Object), (Object)->RefCount)); \
+ \
+ if (InterlockedDecrement(&((Object)->RefCount)) == 0) \
+ PoolFreeBuffer(Object); \
+}
+
+#endif /* __NDISSYS_H */
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/protocol.h
+ * PURPOSE: Definitions for routines used by NDIS protocol drivers
+ */
+
+#ifndef __PROTOCOL_H
+#define __PROTOCOL_H
+
+#include <ndissys.h>
+#include <miniport.h>
+
+
+typedef struct _PROTOCOL_BINDING {
+ LIST_ENTRY ListEntry; /* Entry on global list */
+ KSPIN_LOCK Lock; /* Protecting spin lock */
+ ULONG RefCount; /* Reference count */
+ NDIS_PROTOCOL_CHARACTERISTICS Chars; /* Characteristics */
+ WORK_QUEUE_ITEM WorkItem; /* Work item */
+ LIST_ENTRY AdapterListHead; /* List of adapter bindings */
+} PROTOCOL_BINDING, *PPROTOCOL_BINDING;
+
+#define GET_PROTOCOL_BINDING(Handle)((PPROTOCOL_BINDING)Handle)
+
+
+typedef struct _ADAPTER_BINDING {
+ LIST_ENTRY ListEntry; /* Entry on global list */
+ LIST_ENTRY ProtocolListEntry; /* Entry on protocol binding adapter list */
+ KSPIN_LOCK Lock; /* Protecting spin lock */
+ ULONG RefCount; /* Reference count */
+ PLOGICAL_ADAPTER Adapter; /* Adapter opened by protocol */
+} ADAPTER_BINDING, *PADAPTER_BINDING;
+
+#define GET_ADAPTER_BINDING(Handle)((PADAPTER_BINDING)Handle)
+
+
+extern LIST_ENTRY ProtocolListHead;
+extern KSPIN_LOCK ProtocolListLock;
+
+#endif /* __PROTOCOL_H */
+
+/* EOF */
--- /dev/null
+# NDIS.SYS - NDIS library
+
+TARGETNAME=ndis
+
+BASE_CFLAGS = -I./include -I../../../include -DNDIS_WRAPPER -DBINARY_COMPATIBLE=1
+
+RESOURCE_OBJECT = $(TARGETNAME).coff
+NDIS_OBJECTS = ndis/main.o ndis/40gone.o ndis/50gone.o ndis/buffer.o ndis/cl.o \
+ ndis/cm.o ndis/co.o ndis/control.o ndis/hardware.o \
+ ndis/io.o ndis/memory.o ndis/miniport.o \
+ ndis/protocol.o ndis/string.o ndis/stubs.o ndis/time.o
+
+all: objects $(TARGETNAME).sys
+
+objects:
+ mkdir objects
+
+$(TARGETNAME).coff: $(TARGETNAME).rc ../../../include/reactos/resource.h
+
+OBJECTS = $(NDIS_OBJECTS) $(RESOURCE_OBJECT) ../../../ntoskrnl/ntoskrnl.a
+
+
+ifeq ($(DOSCLI),yes)
+CLEAN_FILES = *.o objects\*.o ndis\*.o $(TARGETNAME).coff $(TARGETNAME).o $(TARGETNAME).a \
+ junk.tmp base.tmp temp.exp $(TARGETNAME).sys $(TARGETNAME).sym
+else
+CLEAN_FILES = *.o objects/*.o ndis/*.o $(TARGETNAME).coff $(TARGETNAME).o $(TARGETNAME).a \
+ junk.tmp base.tmp temp.exp $(TARGETNAME).sys $(TARGETNAME).sym
+endif
+
+$(TARGETNAME).sys: $(OBJECTS)
+ $(DLLTOOL) \
+ --dllname $(TARGETNAME).sys \
+ --def $(TARGETNAME).def \
+ --kill-at \
+ --output-lib $(TARGETNAME).a
+ $(CC) \
+ -mdll \
+ -specs=../../svc_specs \
+ -Wl,-e,_DriverEntry@8 \
+ -Wl,--base-file,base.tmp \
+ -Wl,--defsym,_end=end \
+ -Wl,--defsym,_edata=__data_end__ \
+ -Wl,--defsym,_etext=etext \
+ $(OBJECTS) \
+ -o junk.tmp
+ - $(RM) junk.tmp
+ $(DLLTOOL) \
+ --dllname $(TARGETNAME).sys \
+ --base-file base.tmp \
+ --output-exp temp.exp \
+ --def $(TARGETNAME).edf
+ - $(RM) base.tmp
+ $(CC) \
+ -mdll \
+ -specs=../../svc_specs \
+ -Wl,--image-base,0x10000 \
+ -Wl,-e,_DriverEntry@8 \
+ -Wl,temp.exp \
+ $(OBJECTS) \
+ -o $(TARGETNAME).sys
+ - $(RM) temp.exp
+ $(NM) --numeric-sort $(TARGETNAME).sys > $(TARGETNAME).sym
+
+clean: $(CLEAN_FILES:%=%_clean)
+
+$(CLEAN_FILES:%=%_clean): %_clean:
+ - $(RM) $*
+
+.PHONY: clean $(CLEAN_FILES:%=%_clean)
+
+floppy: $(FLOPPY_DIR)/drivers/$(TARGETNAME).sys
+
+$(FLOPPY_DIR)/drivers/$(TARGETNAME).sys: $(TARGETNAME).sys
+ifeq ($(DOSCLI),yes)
+ $(CP) $(TARGETNAME).sys $(FLOPPY_DIR)\drivers\$(TARGETNAME).sys
+else
+ $(CP) $(TARGETNAME).sys $(FLOPPY_DIR)/drivers/$(TARGETNAME).sys
+endif
+
+dist: $(DIST_DIR)/drivers/$(TARGETNAME).sys
+
+$(DIST_DIR)/drivers/$(TARGETNAME).sys: $(TARGETNAME).sys
+ifeq ($(DOSCLI),yes)
+ $(CP) $(TARGETNAME).sys ..\..\$(DIST_DIR)\drivers\$(TARGETNAME).sys
+else
+ $(CP) $(TARGETNAME).sys ../../$(DIST_DIR)/drivers/$(TARGETNAME).sys
+endif
+
+#WITH_DEBUGGING = yes
+#WIN32_LEAN_AND_MEAN = yes
+#WARNINGS_ARE_ERRORS = yes
+include ../../../rules.mak
--- /dev/null
+; NDIS Kernel Module - ReactOS Operating System
+
+LIBRARY NDIS.SYS
+
+EXPORTS
+ArcFilterDprIndicateReceive@16
+ArcFilterDprIndicateReceiveComplete@4
+EthChangeFilterAddresses@24
+EthCreateFilter@28
+EthDeleteFilter@4
+EthDeleteFilterOpenAdapter@12
+EthFilterAdjust@20
+;EthFilterDprIndicateReceive@32 ?
+;EthFilterDprIndicateReceiveComplete@4 ?
+EthFilterIndicateReceive@32
+EthFilterIndicateReceiveComplete@4
+EthNoteFilterOpenAdapter@16
+EthNumberOfOpenFilterAddresses@8
+EthQueryGlobalFilterAddresses@20
+EthQueryOpenFilterAddresses@24
+EthShouldAddressLoopBack@8
+FddiChangeFilterLongAddresses@24
+FddiChangeFilterShortAddresses@24
+FddiCreateFilter@36
+FddiDeleteFilter@4
+FddiDeleteFilterOpenAdapter@12
+FddiFilterAdjust@20
+;FddiFilterDprIndicateReceive@36 ?
+;FddiFilterDprIndicateReceiveComplete@4 ?
+FddiFilterIndicateReceive@36
+FddiFilterIndicateReceiveComplete@4
+FddiNoteFilterOpenAdapter@16
+FddiNumberOfOpenFilterLongAddresses@8
+FddiNumberOfOpenFilterShortAddresses@8
+FddiQueryGlobalFilterLongAddresses@20
+FddiQueryGlobalFilterShortAddresses@20
+FddiQueryOpenFilterLongAddresses@24
+FddiQueryOpenFilterShortAddresses@24
+FddiShouldAddressLoopBack@12
+NDIS_BUFFER_TO_SPAN_PAGES@4
+NdisAcquireReadWriteLock@12
+NdisAcquireSpinLock@4
+NdisAdjustBufferLength@8
+NdisAllocateBuffer@20
+NdisAllocateBufferPool@12
+NdisAllocateDmaChannel@20
+NdisAllocateMemory@20
+NdisAllocateMemoryWithTag@12
+NdisAllocatePacket@12
+NdisAllocatePacketPool@16
+NdisAllocatePacketPoolEx@20
+NdisAllocateSharedMemory@20
+NdisAllocateSpinLock@4
+NdisAnsiStringToUnicodeString@8
+NdisBufferLength@4
+NdisBufferVirtualAddress@4
+NdisCancelTimer@8
+NdisClAddParty@16
+NdisClCloseAddressFamily@4
+NdisClCloseCall@16
+NdisClDeregisterSap@4
+NdisClDropParty@12
+NdisClIncomingCallComplete@12
+NdisClMakeCall@16
+NdisClModifyCallQoS@8
+NdisClOpenAddressFamily@24
+NdisClRegisterSap@16
+NdisCloseAdapter@8
+NdisCloseConfiguration@4
+NdisCloseFile@4
+NdisCmActivateVc@8
+NdisCmAddPartyComplete@16
+NdisCmCloseAddressFamilyComplete@8
+NdisCmCloseCallComplete@12
+NdisCmDeactivateVc@4
+NdisCmDeregisterSapComplete@8
+NdisCmDispatchCallConnected@4
+NdisCmDispatchIncomingCall@12
+NdisCmDispatchIncomingCallQoSChange@8
+NdisCmDispatchIncomingCloseCall@16
+NdisCmDispatchIncomingDropParty@16
+NdisCmDropPartyComplete@8
+NdisCmMakeCallComplete@20
+NdisCmModifyCallQoSComplete@12
+NdisCmOpenAddressFamilyComplete@12
+NdisCmRegisterAddressFamily@16
+NdisCmRegisterSapComplete@12
+NdisCoCreateVc@16
+NdisCoDeleteVc@4
+NdisCoRequest@20
+NdisCoRequestComplete@20
+NdisCoSendPackets@12
+;NdisCompareAnsiString ?
+;NdisCompareUnicodeString ?
+NdisCompleteBindAdapter@12
+NdisCompleteCloseAdapter@8
+NdisCompleteDmaTransfer@24
+NdisCompleteOpenAdapter@12
+NdisCompletePnPEvent@12
+NdisCompleteQueryStatistics@12
+NdisCompleteUnbindAdapter@8
+NdisConvertStringToAtmAddress@12
+NdisCopyBuffer@24
+NdisCopyFromPacketToPacket@24
+NdisDeregisterAdapter@4
+NdisDeregisterAdapterShutdownHandler@4
+NdisDeregisterMac@8
+NdisDeregisterProtocol@8
+NdisDprAcquireSpinLock@4
+NdisDprAllocatePacket@12
+NdisDprAllocatePacketNonInterlocked@12
+NdisDprFreePacket@4
+NdisDprFreePacketNonInterlocked@4
+NdisDprReleaseSpinLock@4
+NdisEqualString@12
+NdisFlushBuffer@8
+NdisFreeBuffer@4
+NdisFreeBufferPool@4
+NdisFreeDmaChannel@4
+NdisFreeMemory@12
+NdisFreePacket@4
+NdisFreePacketPool@4
+NdisFreeSharedMemory@24
+NdisFreeSpinLock@4
+NdisGetBufferPhysicalArraySize@8
+NdisGetCurrentProcessorCounts@12
+NdisGetCurrentProcessorCpuUsage@4
+NdisGetCurrentSystemTime@4
+NdisGetDriverHandle@8
+NdisGetFirstBufferFromPacket@20
+NdisGetReceivedPacket@8
+NdisGetSystemUptime@4
+NdisIMAssociateMiniport@8
+NdisIMCancelInitializeDeviceInstance@8
+NdisIMCopySendCompletePerPacketInfo@8
+NdisIMCopySendPerPacketInfo@8
+NdisIMDeInitializeDeviceInstance@4
+NdisIMDeregisterLayeredMiniport@4
+NdisIMGetBindingContext@4
+NdisIMGetDeviceContext@4
+NdisIMInitializeDeviceInstance@8
+NdisIMInitializeDeviceInstanceEx@12
+NdisImmediateReadPciSlotInformation@20
+NdisImmediateReadPortUchar@12
+NdisImmediateReadPortUlong@12
+NdisImmediateReadPortUshort@12
+NdisImmediateReadSharedMemory@16
+NdisImmediateWritePciSlotInformation@20
+NdisImmediateWritePortUchar@12
+NdisImmediateWritePortUlong@12
+NdisImmediateWritePortUshort@12
+NdisImmediateWriteSharedMemory@16
+NdisIMQueueMiniportCallback@12
+NdisIMRegisterLayeredMiniport@16
+NdisIMRevertBack@8
+NdisIMSwitchToMiniport@8
+NdisInitAnsiString@8
+NdisInitializeEvent@4
+NdisInitializeInterrupt@40
+NdisInitializeReadWriteLock@4
+NdisInitializeString@8
+NdisInitializeTimer@12
+NdisInitializeWrapper@16
+NdisInitUnicodeString@8
+;NdisInterlockedAddLargeInterger ?
+NdisInterlockedAddUlong@12
+NdisInterlockedDecrement@4
+NdisInterlockedIncrement@4
+NdisInterlockedInsertHeadList@12
+NdisInterlockedInsertTailList@12
+NdisInterlockedPopEntrySList@8
+NdisInterlockedPushEntrySList@12
+NdisInterlockedRemoveHeadList@8
+NdisMAllocateMapRegisters@20
+NdisMAllocateSharedMemory@20
+NdisMAllocateSharedMemoryAsync@16
+NdisMapFile@12
+NdisMapIoSpace@24
+;NdisMatchPdoWithPacket ?
+NdisMCancelTimer@8
+NdisMCloseLog@4
+NdisMCmActivateVc@8
+NdisMCmCreateVc@16
+NdisMCmDeactivateVc@4
+NdisMCmDeleteVc@4
+NdisMCmRegisterAddressFamily@16
+NdisMCmRequest@16
+NdisMCoActivateVcComplete@12
+NdisMCoDeactivateVcComplete@8
+NdisMCoIndicateReceivePacket@12
+NdisMCoIndicateStatus@20
+NdisMCompleteBufferPhysicalMapping@12
+NdisMCoReceiveComplete@4
+NdisMCoRequestComplete@12
+NdisMCoSendComplete@12
+NdisMCreateLog@12
+NdisMDeregisterAdapterShutdownHandler@4
+NdisMDeregisterDevice@4
+NdisMDeregisterDmaChannel@4
+NdisMDeregisterInterrupt@4
+NdisMDeregisterIoPortRange@16
+NdisMFlushLog@4
+NdisMFreeMapRegisters@4
+NdisMFreeSharedMemory@24
+NdisMGetDeviceProperty@24
+NdisMIndicateStatus@16
+NdisMIndicateStatusComplete@4
+NdisMInitializeScatterGatherDma@12
+NdisMInitializeTimer@16
+NdisMMapIoSpace@20
+NdisMPciAssignResources@12
+NdisMPromoteMiniport@4
+NdisMQueryAdapterInstanceName@8
+NdisMQueryAdapterResources@16
+NdisMQueryInformationComplete@8
+NdisMReadDmaCounter@4
+NdisMRegisterAdapterShutdownHandler@12
+NdisMRegisterDevice@24
+NdisMRegisterDmaChannel@24
+NdisMRegisterInterrupt@28
+NdisMRegisterIoPortRange@16
+NdisMRegisterMiniport@12
+NdisMRegisterUnloadHandler@8
+NdisMRemoveMiniport@4
+NdisMResetComplete@12
+NdisMSendComplete@12
+NdisMSendResourcesAvailable@4
+NdisMSetAttributes@16
+NdisMSetAttributesEx@20
+NdisMSetInformationComplete@8
+NdisMSetMiniportSecondary@8
+NdisMSetPeriodicTimer@8
+NdisMSetTimer@8
+NdisMSleep@4
+NdisMStartBufferPhysicalMapping@24
+NdisMSynchronizeWithInterrupt@12
+NdisMTransferDataComplete@16
+NdisMUnmapIoSpace@12
+NdisMWanIndicateReceive@20
+NdisMWanIndicateReceiveComplete@4
+NdisMWanSendComplete@12
+NdisMWriteLogData@12
+NdisOpenAdapter@44
+NdisOpenConfiguration@12
+NdisOpenConfigurationKeyByIndex@20
+NdisOpenConfigurationKeyByName@16
+NdisOpenFile@24
+NdisOpenProtocolConfiguration@12
+;NdisOverrideBusNumber ?
+NdisPacketPoolUsage@4
+NdisPciAssignResources@20
+NdisQueryAdapterInstanceName@8
+;NdisQueryBindInstanceName?
+NdisQueryBuffer@12
+NdisQueryBufferOffset@12
+NdisQueryBufferSafe@16
+NdisQueryMapRegisterCount@8
+NdisReadConfiguration@20
+NdisReadEisaSlotInformation@16
+NdisReadEisaSlotInformationEx@20
+NdisReadMcaPosInformation@16
+NdisReadNetworkAddress@16
+NdisReadPciSlotInformation@20
+NdisReadPcmciaAttributeMemory@16
+;NdisReEnumerateProtocolBindings ?
+NdisRegisterAdapter@24
+NdisRegisterAdapterShutdownHandler@12
+NdisRegisterMac@24
+NdisRegisterProtocol@16
+;NdisRegisterTdiCallBack ?
+NdisReleaseAdapterResources@4
+NdisReleaseReadWriteLock@8
+NdisReleaseSpinLock@4
+NdisRemoveInterrupt@4
+NdisRequest@12
+NdisReset@8
+NdisResetEvent@4
+NdisReturnPackets@8
+NdisSend@12
+NdisSendPackets@12
+NdisSetEvent@4
+;NdisSetPacketPoolProtocolId ?
+;NdisSetProtocolFilter ?
+NdisSetTimer@8
+NdisSetupDmaTransfer@24
+NdisSystemProcessorCount@0
+NdisTerminateWrapper@8
+NdisTransferData@28
+NdisUnchainBufferAtBack@8
+NdisUnchainBufferAtFront@8
+NdisUnicodeStringToAnsiString@8
+NdisUnmapFile@4
+NdisUpcaseUnicodeString@8
+NdisUpdateSharedMemory@20
+NdisWaitEvent@8
+NdisWriteConfiguration@16
+;NdisWriteErrorLogEntry ?
+NdisWriteEventLogEntry@28
+NdisWritePciSlotInformation@20
+NdisWritePcmciaAttributeMemory@16
+TrChangeFunctionalAddress@20
+TrChangeGroupAddress@20
+TrCreateFilter@28
+TrDeleteFilter@4
+TrDeleteFilterOpenAdapter@12
+TrFilterAdjust@20
+;TrFilterDprIndicateReceive@28
+;TrFilterDprIndicateReceiveComplete@4
+TrFilterIndicateReceive@28
+TrFilterIndicateReceiveComplete@4
+TrNoteFilterOpenAdapter@16
+TrShouldAddressLoopBack@12
+
+; EOF
--- /dev/null
+; NDIS Kernel Module - ReactOS Operating System
+
+LIBRARY NDIS.SYS
+
+EXPORTS
+ArcFilterDprIndicateReceive=ArcFilterDprIndicateReceive@16
+ArcFilterDprIndicateReceiveComplete=ArcFilterDprIndicateReceiveComplete@4
+EthChangeFilterAddresses=EthChangeFilterAddresses@24
+EthCreateFilter=EthCreateFilter@28
+EthDeleteFilter=EthDeleteFilter@4
+EthDeleteFilterOpenAdapter=EthDeleteFilterOpenAdapter@12
+EthFilterAdjust=EthFilterAdjust@20
+;EthFilterDprIndicateReceive@32 ?
+;EthFilterDprIndicateReceiveComplete@4 ?
+EthFilterIndicateReceive=EthFilterIndicateReceive@32
+EthFilterIndicateReceiveComplete=EthFilterIndicateReceiveComplete@4
+EthNoteFilterOpenAdapter=EthNoteFilterOpenAdapter@16
+EthNumberOfOpenFilterAddresses=EthNumberOfOpenFilterAddresses@8
+EthQueryGlobalFilterAddresses=EthQueryGlobalFilterAddresses@20
+EthQueryOpenFilterAddresses=EthQueryOpenFilterAddresses@24
+EthShouldAddressLoopBack=EthShouldAddressLoopBack@8
+FddiChangeFilterLongAddresses=FddiChangeFilterLongAddresses@24
+FddiChangeFilterShortAddresses=FddiChangeFilterShortAddresses@24
+FddiCreateFilter=FddiCreateFilter@36
+FddiDeleteFilter=FddiDeleteFilter@4
+FddiDeleteFilterOpenAdapter=FddiDeleteFilterOpenAdapter@12
+FddiFilterAdjust=FddiFilterAdjust@20
+;FddiFilterDprIndicateReceive@36 ?
+;FddiFilterDprIndicateReceiveComplete@4 ?
+FddiFilterIndicateReceive=FddiFilterIndicateReceive@36
+FddiFilterIndicateReceiveComplete=FddiFilterIndicateReceiveComplete@4
+FddiNoteFilterOpenAdapter=FddiNoteFilterOpenAdapter@16
+FddiNumberOfOpenFilterLongAddresses=FddiNumberOfOpenFilterLongAddresses@8
+FddiNumberOfOpenFilterShortAddresses=FddiNumberOfOpenFilterShortAddresses@8
+FddiQueryGlobalFilterLongAddresses=FddiQueryGlobalFilterLongAddresses@20
+FddiQueryGlobalFilterShortAddresses=FddiQueryGlobalFilterShortAddresses@20
+FddiQueryOpenFilterLongAddresses=FddiQueryOpenFilterLongAddresses@24
+FddiQueryOpenFilterShortAddresses=FddiQueryOpenFilterShortAddresses@24
+FddiShouldAddressLoopBack=FddiShouldAddressLoopBack@12
+NDIS_BUFFER_TO_SPAN_PAGES=NDIS_BUFFER_TO_SPAN_PAGES@4
+NdisAcquireReadWriteLock=NdisAcquireReadWriteLock@12
+NdisAcquireSpinLock=NdisAcquireSpinLock@4
+NdisAdjustBufferLength=NdisAdjustBufferLength@8
+NdisAllocateBuffer=NdisAllocateBuffer@20
+NdisAllocateBufferPool=NdisAllocateBufferPool@12
+NdisAllocateDmaChannel=NdisAllocateDmaChannel@20
+NdisAllocateMemory=NdisAllocateMemory@20
+NdisAllocateMemoryWithTag=NdisAllocateMemoryWithTag@12
+NdisAllocatePacket=NdisAllocatePacket@12
+NdisAllocatePacketPool=NdisAllocatePacketPool@16
+NdisAllocatePacketPoolEx=NdisAllocatePacketPoolEx@20
+NdisAllocateSharedMemory=NdisAllocateSharedMemory@20
+NdisAllocateSpinLock=NdisAllocateSpinLock@4
+NdisAnsiStringToUnicodeString=NdisAnsiStringToUnicodeString@8
+NdisBufferLength=NdisBufferLength@4
+NdisBufferVirtualAddress=NdisBufferVirtualAddress@4
+NdisCancelTimer=NdisCancelTimer@8
+NdisClAddParty=NdisClAddParty@16
+NdisClCloseAddressFamily=NdisClCloseAddressFamily@4
+NdisClCloseCall=NdisClCloseCall@16
+NdisClDeregisterSap=NdisClDeregisterSap@4
+NdisClDropParty=NdisClDropParty@12
+NdisClIncomingCallComplete=NdisClIncomingCallComplete@12
+NdisClMakeCall=NdisClMakeCall@16
+NdisClModifyCallQoS=NdisClModifyCallQoS@8
+NdisClOpenAddressFamily=NdisClOpenAddressFamily@24
+NdisClRegisterSap=NdisClRegisterSap@16
+NdisCloseAdapter=NdisCloseAdapter@8
+NdisCloseConfiguration=NdisCloseConfiguration@4
+NdisCloseFile=NdisCloseFile@4
+NdisCmActivateVc=NdisCmActivateVc@8
+NdisCmAddPartyComplete=NdisCmAddPartyComplete@16
+NdisCmCloseAddressFamilyComplete=NdisCmCloseAddressFamilyComplete@8
+NdisCmCloseCallComplete=NdisCmCloseCallComplete@12
+NdisCmDeactivateVc=NdisCmDeactivateVc@4
+NdisCmDeregisterSapComplete=NdisCmDeregisterSapComplete@8
+NdisCmDispatchCallConnected=NdisCmDispatchCallConnected@4
+NdisCmDispatchIncomingCall=NdisCmDispatchIncomingCall@12
+NdisCmDispatchIncomingCallQoSChange=NdisCmDispatchIncomingCallQoSChange@8
+NdisCmDispatchIncomingCloseCall=NdisCmDispatchIncomingCloseCall@16
+NdisCmDispatchIncomingDropParty=NdisCmDispatchIncomingDropParty@16
+NdisCmDropPartyComplete=NdisCmDropPartyComplete@8
+NdisCmMakeCallComplete=NdisCmMakeCallComplete@20
+NdisCmModifyCallQoSComplete=NdisCmModifyCallQoSComplete@12
+NdisCmOpenAddressFamilyComplete=NdisCmOpenAddressFamilyComplete@12
+NdisCmRegisterAddressFamily=NdisCmRegisterAddressFamily@16
+NdisCmRegisterSapComplete=NdisCmRegisterSapComplete@12
+NdisCoCreateVc=NdisCoCreateVc@16
+NdisCoDeleteVc=NdisCoDeleteVc@4
+NdisCoRequest=NdisCoRequest@20
+NdisCoRequestComplete=NdisCoRequestComplete@20
+NdisCoSendPackets=NdisCoSendPackets@12
+;NdisCompareAnsiString ?
+;NdisCompareUnicodeString ?
+NdisCompleteBindAdapter=NdisCompleteBindAdapter@12
+NdisCompleteCloseAdapter=NdisCompleteCloseAdapter@8
+NdisCompleteDmaTransfer=NdisCompleteDmaTransfer@24
+NdisCompleteOpenAdapter=NdisCompleteOpenAdapter@12
+NdisCompletePnPEvent=NdisCompletePnPEvent@12
+NdisCompleteQueryStatistics=NdisCompleteQueryStatistics@12
+NdisCompleteUnbindAdapter=NdisCompleteUnbindAdapter@8
+NdisConvertStringToAtmAddress=NdisConvertStringToAtmAddress@12
+NdisCopyBuffer=NdisCopyBuffer@24
+NdisCopyFromPacketToPacket=NdisCopyFromPacketToPacket@24
+NdisDeregisterAdapter=NdisDeregisterAdapter@4
+NdisDeregisterAdapterShutdownHandler=NdisDeregisterAdapterShutdownHandler@4
+NdisDeregisterMac=NdisDeregisterMac@8
+NdisDeregisterProtocol=NdisDeregisterProtocol@8
+NdisDprAcquireSpinLock=NdisDprAcquireSpinLock@4
+NdisDprAllocatePacket=NdisDprAllocatePacket@12
+NdisDprAllocatePacketNonInterlocked=NdisDprAllocatePacketNonInterlocked@12
+NdisDprFreePacket=NdisDprFreePacket@4
+NdisDprFreePacketNonInterlocked=NdisDprFreePacketNonInterlocked@4
+NdisDprReleaseSpinLock=NdisDprReleaseSpinLock@4
+NdisEqualString=NdisEqualString@12
+NdisFlushBuffer=NdisFlushBuffer@8
+NdisFreeBuffer=NdisFreeBuffer@4
+NdisFreeBufferPool=NdisFreeBufferPool@4
+NdisFreeDmaChannel=NdisFreeDmaChannel@4
+NdisFreeMemory=NdisFreeMemory@12
+NdisFreePacket=NdisFreePacket@4
+NdisFreePacketPool=NdisFreePacketPool@4
+NdisFreeSharedMemory=NdisFreeSharedMemory@24
+NdisFreeSpinLock=NdisFreeSpinLock@4
+NdisGetBufferPhysicalArraySize=NdisGetBufferPhysicalArraySize@8
+NdisGetCurrentProcessorCounts=NdisGetCurrentProcessorCounts@12
+NdisGetCurrentProcessorCpuUsage=NdisGetCurrentProcessorCpuUsage@4
+NdisGetCurrentSystemTime=NdisGetCurrentSystemTime@4
+NdisGetDriverHandle=NdisGetDriverHandle@8
+NdisGetFirstBufferFromPacket=NdisGetFirstBufferFromPacket@20
+NdisGetReceivedPacket=NdisGetReceivedPacket@8
+NdisGetSystemUptime=NdisGetSystemUptime@4
+NdisIMAssociateMiniport=NdisIMAssociateMiniport@8
+NdisIMCancelInitializeDeviceInstance=NdisIMCancelInitializeDeviceInstance@8
+NdisIMCopySendCompletePerPacketInfo=NdisIMCopySendCompletePerPacketInfo@8
+NdisIMCopySendPerPacketInfo=NdisIMCopySendPerPacketInfo@8
+NdisIMDeInitializeDeviceInstance=NdisIMDeInitializeDeviceInstance@4
+NdisIMDeregisterLayeredMiniport=NdisIMDeregisterLayeredMiniport@4
+NdisIMGetBindingContext=NdisIMGetBindingContext@4
+NdisIMGetDeviceContext=NdisIMGetDeviceContext@4
+NdisIMInitializeDeviceInstance=NdisIMInitializeDeviceInstance@8
+NdisIMInitializeDeviceInstanceEx=NdisIMInitializeDeviceInstanceEx@12
+NdisImmediateReadPciSlotInformation=NdisImmediateReadPciSlotInformation@20
+NdisImmediateReadPortUchar=NdisImmediateReadPortUchar@12
+NdisImmediateReadPortUlong=NdisImmediateReadPortUlong@12
+NdisImmediateReadPortUshort=NdisImmediateReadPortUshort@12
+NdisImmediateReadSharedMemory=NdisImmediateReadSharedMemory@16
+NdisImmediateWritePciSlotInformation=NdisImmediateWritePciSlotInformation@20
+NdisImmediateWritePortUchar=NdisImmediateWritePortUchar@12
+NdisImmediateWritePortUlong=NdisImmediateWritePortUlong@12
+NdisImmediateWritePortUshort=NdisImmediateWritePortUshort@12
+NdisImmediateWriteSharedMemory=NdisImmediateWriteSharedMemory@16
+NdisIMQueueMiniportCallback=NdisIMQueueMiniportCallback@12
+NdisIMRegisterLayeredMiniport=NdisIMRegisterLayeredMiniport@16
+NdisIMRevertBack=NdisIMRevertBack@8
+NdisIMSwitchToMiniport=NdisIMSwitchToMiniport@8
+NdisInitAnsiString=NdisInitAnsiString@8
+NdisInitializeEvent=NdisInitializeEvent@4
+NdisInitializeInterrupt=NdisInitializeInterrupt@40
+NdisInitializeReadWriteLock=NdisInitializeReadWriteLock@4
+NdisInitializeString=NdisInitializeString@8
+NdisInitializeTimer=NdisInitializeTimer@12
+NdisInitializeWrapper=NdisInitializeWrapper@16
+NdisInitUnicodeString=NdisInitUnicodeString@8
+;NdisInterlockedAddLargeInterger ?
+NdisInterlockedAddUlong=NdisInterlockedAddUlong@12
+NdisInterlockedDecrement=NdisInterlockedDecrement@4
+NdisInterlockedIncrement=NdisInterlockedIncrement@4
+NdisInterlockedInsertHeadList=NdisInterlockedInsertHeadList@12
+NdisInterlockedInsertTailList=NdisInterlockedInsertTailList@12
+NdisInterlockedPopEntrySList=NdisInterlockedPopEntrySList@8
+NdisInterlockedPushEntrySList=NdisInterlockedPushEntrySList@12
+NdisInterlockedRemoveHeadList=NdisInterlockedRemoveHeadList@8
+NdisMAllocateMapRegisters=NdisMAllocateMapRegisters@20
+NdisMAllocateSharedMemory=NdisMAllocateSharedMemory@20
+NdisMAllocateSharedMemoryAsync=NdisMAllocateSharedMemoryAsync@16
+NdisMapFile=NdisMapFile@12
+NdisMapIoSpace=NdisMapIoSpace@24
+;NdisMatchPdoWithPacket ?
+NdisMCancelTimer=NdisMCancelTimer@8
+NdisMCloseLog=NdisMCloseLog@4
+NdisMCmActivateVc=NdisMCmActivateVc@8
+NdisMCmCreateVc=NdisMCmCreateVc@16
+NdisMCmDeactivateVc=NdisMCmDeactivateVc@4
+NdisMCmDeleteVc=NdisMCmDeleteVc@4
+NdisMCmRegisterAddressFamily=NdisMCmRegisterAddressFamily@16
+NdisMCmRequest=NdisMCmRequest@16
+NdisMCoActivateVcComplete=NdisMCoActivateVcComplete@12
+NdisMCoDeactivateVcComplete=NdisMCoDeactivateVcComplete@8
+NdisMCoIndicateReceivePacket=NdisMCoIndicateReceivePacket@12
+NdisMCoIndicateStatus=NdisMCoIndicateStatus@20
+NdisMCompleteBufferPhysicalMapping=NdisMCompleteBufferPhysicalMapping@12
+NdisMCoReceiveComplete=NdisMCoReceiveComplete@4
+NdisMCoRequestComplete=NdisMCoRequestComplete@12
+NdisMCoSendComplete=NdisMCoSendComplete@12
+NdisMCreateLog=NdisMCreateLog@12
+NdisMDeregisterAdapterShutdownHandler=NdisMDeregisterAdapterShutdownHandler@4
+NdisMDeregisterDevice=NdisMDeregisterDevice@4
+NdisMDeregisterDmaChannel=NdisMDeregisterDmaChannel@4
+NdisMDeregisterInterrupt=NdisMDeregisterInterrupt@4
+NdisMDeregisterIoPortRange=NdisMDeregisterIoPortRange@16
+NdisMFlushLog=NdisMFlushLog@4
+NdisMFreeMapRegisters=NdisMFreeMapRegisters@4
+NdisMFreeSharedMemory=NdisMFreeSharedMemory@24
+NdisMGetDeviceProperty=NdisMGetDeviceProperty@24
+NdisMIndicateStatus=NdisMIndicateStatus@16
+NdisMIndicateStatusComplete=NdisMIndicateStatusComplete@4
+NdisMInitializeScatterGatherDma=NdisMInitializeScatterGatherDma@12
+NdisMInitializeTimer=NdisMInitializeTimer@16
+NdisMMapIoSpace=NdisMMapIoSpace@20
+NdisMPciAssignResources=NdisMPciAssignResources@12
+NdisMPromoteMiniport=NdisMPromoteMiniport@4
+NdisMQueryAdapterInstanceName=NdisMQueryAdapterInstanceName@8
+NdisMQueryAdapterResources=NdisMQueryAdapterResources@16
+NdisMQueryInformationComplete=NdisMQueryInformationComplete@8
+NdisMReadDmaCounter=NdisMReadDmaCounter@4
+NdisMRegisterAdapterShutdownHandler=NdisMRegisterAdapterShutdownHandler@12
+NdisMRegisterDevice=NdisMRegisterDevice@24
+NdisMRegisterDmaChannel=NdisMRegisterDmaChannel@24
+NdisMRegisterInterrupt=NdisMRegisterInterrupt@28
+NdisMRegisterIoPortRange=NdisMRegisterIoPortRange@16
+NdisMRegisterMiniport=NdisMRegisterMiniport@12
+NdisMRegisterUnloadHandler=NdisMRegisterUnloadHandler@8
+NdisMRemoveMiniport=NdisMRemoveMiniport@4
+NdisMResetComplete=NdisMResetComplete@12
+NdisMSendComplete=NdisMSendComplete@12
+NdisMSendResourcesAvailable=NdisMSendResourcesAvailable@4
+NdisMSetAttributes=NdisMSetAttributes@16
+NdisMSetAttributesEx=NdisMSetAttributesEx@20
+NdisMSetInformationComplete=NdisMSetInformationComplete@8
+NdisMSetMiniportSecondary=NdisMSetMiniportSecondary@8
+NdisMSetPeriodicTimer=NdisMSetPeriodicTimer@8
+NdisMSetTimer=NdisMSetTimer@8
+NdisMSleep=NdisMSleep@4
+NdisMStartBufferPhysicalMapping=NdisMStartBufferPhysicalMapping@24
+NdisMSynchronizeWithInterrupt=NdisMSynchronizeWithInterrupt@12
+NdisMTransferDataComplete=NdisMTransferDataComplete@16
+NdisMUnmapIoSpace=NdisMUnmapIoSpace@12
+NdisMWanIndicateReceive=NdisMWanIndicateReceive@20
+NdisMWanIndicateReceiveComplete=NdisMWanIndicateReceiveComplete@4
+NdisMWanSendComplete=NdisMWanSendComplete@12
+NdisMWriteLogData=NdisMWriteLogData@12
+NdisOpenAdapter=NdisOpenAdapter@44
+NdisOpenConfiguration=NdisOpenConfiguration@12
+NdisOpenConfigurationKeyByIndex=NdisOpenConfigurationKeyByIndex@20
+NdisOpenConfigurationKeyByName=NdisOpenConfigurationKeyByName@16
+NdisOpenFile=NdisOpenFile@24
+NdisOpenProtocolConfiguration=NdisOpenProtocolConfiguration@12
+;NdisOverrideBusNumber ?
+NdisPacketPoolUsage=NdisPacketPoolUsage@4
+NdisPciAssignResources=NdisPciAssignResources@20
+NdisQueryAdapterInstanceName=NdisQueryAdapterInstanceName@8
+;NdisQueryBindInstanceName?
+NdisQueryBuffer=NdisQueryBuffer@12
+NdisQueryBufferOffset=NdisQueryBufferOffset@12
+NdisQueryBufferSafe=NdisQueryBufferSafe@16
+NdisQueryMapRegisterCount=NdisQueryMapRegisterCount@8
+NdisReadConfiguration=NdisReadConfiguration@20
+NdisReadEisaSlotInformation=NdisReadEisaSlotInformation@16
+NdisReadEisaSlotInformationEx=NdisReadEisaSlotInformationEx@20
+NdisReadMcaPosInformation=NdisReadMcaPosInformation@16
+NdisReadNetworkAddress=NdisReadNetworkAddress@16
+NdisReadPciSlotInformation=NdisReadPciSlotInformation@20
+NdisReadPcmciaAttributeMemory=NdisReadPcmciaAttributeMemory@16
+;NdisReEnumerateProtocolBindings ?
+NdisRegisterAdapter=NdisRegisterAdapter@24
+NdisRegisterAdapterShutdownHandler=NdisRegisterAdapterShutdownHandler@12
+NdisRegisterMac=NdisRegisterMac@24
+NdisRegisterProtocol=NdisRegisterProtocol@16
+;NdisRegisterTdiCallBack ?
+NdisReleaseAdapterResources=NdisReleaseAdapterResources@4
+NdisReleaseReadWriteLock=NdisReleaseReadWriteLock@8
+NdisReleaseSpinLock=NdisReleaseSpinLock@4
+NdisRemoveInterrupt=NdisRemoveInterrupt@4
+NdisRequest=NdisRequest@12
+NdisReset=NdisReset@8
+NdisResetEvent=NdisResetEvent@4
+NdisReturnPackets=NdisReturnPackets@8
+NdisSend=NdisSend@12
+NdisSendPackets=NdisSendPackets@12
+NdisSetEvent=NdisSetEvent@4
+;NdisSetPacketPoolProtocolId ?
+;NdisSetProtocolFilter ?
+NdisSetTimer=NdisSetTimer@8
+NdisSetupDmaTransfer=NdisSetupDmaTransfer@24
+NdisSystemProcessorCount=NdisSystemProcessorCount@0
+NdisTerminateWrapper=NdisTerminateWrapper@8
+NdisTransferData=NdisTransferData@28
+NdisUnchainBufferAtBack=NdisUnchainBufferAtBack@8
+NdisUnchainBufferAtFront=NdisUnchainBufferAtFront@8
+NdisUnicodeStringToAnsiString=NdisUnicodeStringToAnsiString@8
+NdisUnmapFile=NdisUnmapFile@4
+NdisUpcaseUnicodeString=NdisUpcaseUnicodeString@8
+NdisUpdateSharedMemory=NdisUpdateSharedMemory@20
+NdisWaitEvent=NdisWaitEvent@8
+NdisWriteConfiguration=NdisWriteConfiguration@16
+;NdisWriteErrorLogEntry ?
+NdisWriteEventLogEntry=NdisWriteEventLogEntry@28
+NdisWritePciSlotInformation=NdisWritePciSlotInformation@20
+NdisWritePcmciaAttributeMemory=NdisWritePcmciaAttributeMemory@16
+TrChangeFunctionalAddress=TrChangeFunctionalAddress@20
+TrChangeGroupAddress=TrChangeGroupAddress@20
+TrCreateFilter=TrCreateFilter@28
+TrDeleteFilter=TrDeleteFilter@4
+TrDeleteFilterOpenAdapter=TrDeleteFilterOpenAdapter@12
+TrFilterAdjust=TrFilterAdjust@20
+;TrFilterDprIndicateReceive@28
+;TrFilterDprIndicateReceiveComplete@4
+TrFilterIndicateReceive=TrFilterIndicateReceive@28
+TrFilterIndicateReceiveComplete=TrFilterIndicateReceiveComplete@4
+TrNoteFilterOpenAdapter=TrNoteFilterOpenAdapter@16
+TrShouldAddressLoopBack=TrShouldAddressLoopBack@12
+
+; EOF
--- /dev/null
+#include <defines.h>
+#include <reactos/resource.h>
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
+ PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", RES_STR_COMPANY_NAME
+ VALUE "FileDescription", "NDIS library\0"
+ VALUE "FileVersion", "0.0.0\0"
+ VALUE "InternalName", "ndis\0"
+ VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
+ VALUE "OriginalFilename", "ndis.sys\0"
+ VALUE "ProductName", RES_STR_PRODUCT_NAME
+ VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/40gone.c
+ * PURPOSE: Obsoleted functions in NDIS 4.0
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+VOID
+EXPORT
+ArcFilterDprIndicateReceive(
+ IN PARC_FILTER Filter,
+ IN PUCHAR pRawHeader,
+ IN PUCHAR pData,
+ IN UINT Length)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+ArcFilterDprIndicateReceiveComplete(
+ IN PARC_FILTER Filter)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+EthChangeFilterAddresses(
+ IN PETH_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN UINT AddressCount,
+ IN CHAR Addresses [] [ETH_LENGTH_OF_ADDRESS],
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+BOOLEAN
+EXPORT
+EthCreateFilter(
+ IN UINT MaximumMulticastAddresses,
+ IN ETH_ADDRESS_CHANGE AddressChangeAction,
+ IN ETH_FILTER_CHANGE FilterChangeAction,
+ IN ETH_DEFERRED_CLOSE CloseAction,
+ IN PUCHAR AdapterAddress,
+ IN PNDIS_SPIN_LOCK Lock,
+ OUT PETH_FILTER * Filter)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+VOID
+EXPORT
+EthDeleteFilter(
+ IN PETH_FILTER Filter)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+EthDeleteFilterOpenAdapter(
+ IN PETH_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+EthFilterAdjust(
+ IN PETH_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN UINT FilterClasses,
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+EthFilterIndicateReceive(
+ IN PETH_FILTER Filter,
+ IN NDIS_HANDLE MacReceiveContext,
+ IN PCHAR Address,
+ IN PVOID HeaderBuffer,
+ IN UINT HeaderBufferSize,
+ IN PVOID LookaheadBuffer,
+ IN UINT LookaheadBufferSize,
+ IN UINT PacketSize)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+EthFilterIndicateReceiveComplete(
+ IN PETH_FILTER Filter)
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+EthNoteFilterOpenAdapter(
+ IN PETH_FILTER Filter,
+ IN NDIS_HANDLE MacBindingHandle,
+ IN NDIS_HANDLE NdisBindingContext,
+ OUT PNDIS_HANDLE NdisFilterHandle)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+UINT
+EXPORT
+EthNumberOfOpenFilterAddresses(
+ IN PETH_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+VOID
+EXPORT
+EthQueryGlobalFilterAddresses (
+ OUT PNDIS_STATUS Status,
+ IN PETH_FILTER Filter,
+ IN UINT SizeOfArray,
+ OUT PUINT NumberOfAddresses,
+ IN OUT CHAR AddressArray [] [ETH_LENGTH_OF_ADDRESS])
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+EthQueryOpenFilterAddresses(
+ OUT PNDIS_STATUS Status,
+ IN PETH_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN UINT SizeOfArray,
+ OUT PUINT NumberOfAddresses,
+ IN OUT CHAR AddressArray [] [ETH_LENGTH_OF_ADDRESS])
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+EthShouldAddressLoopBack(
+ IN PETH_FILTER Filter,
+ IN CHAR Address [ETH_LENGTH_OF_ADDRESS])
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+NDIS_STATUS
+EXPORT
+FddiChangeFilterLongAddresses(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN UINT AddressCount,
+ IN CHAR Addresses [] [FDDI_LENGTH_OF_LONG_ADDRESS],
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+FddiChangeFilterShortAddresses(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN UINT AddressCount,
+ IN CHAR Addresses [] [FDDI_LENGTH_OF_SHORT_ADDRESS],
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+BOOLEAN
+EXPORT
+FddiCreateFilter(
+ IN UINT MaximumMulticastLongAddresses,
+ IN UINT MaximumMulticastShortAddresses,
+ IN FDDI_ADDRESS_CHANGE AddressChangeAction,
+ IN FDDI_FILTER_CHANGE FilterChangeAction,
+ IN FDDI_DEFERRED_CLOSE CloseAction,
+ IN PUCHAR AdapterLongAddress,
+ IN PUCHAR AdapterShortAddress,
+ IN PNDIS_SPIN_LOCK Lock,
+ OUT PFDDI_FILTER * Filter)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+VOID
+EXPORT
+FddiDeleteFilter(
+ IN PFDDI_FILTER Filter)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+FddiDeleteFilterOpenAdapter(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_SUCCESS;
+}
+
+
+NDIS_STATUS
+EXPORT
+FddiFilterAdjust(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN UINT FilterClasses,
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+FddiFilterIndicateReceive(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE MacReceiveContext,
+ IN PCHAR Address,
+ IN UINT AddressLength,
+ IN PVOID HeaderBuffer,
+ IN UINT HeaderBufferSize,
+ IN PVOID LookaheadBuffer,
+ IN UINT LookaheadBufferSize,
+ IN UINT PacketSize)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+FddiFilterIndicateReceiveComplete(
+ IN PFDDI_FILTER Filter)
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+FddiNoteFilterOpenAdapter(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE MacBindingHandle,
+ IN NDIS_HANDLE NdisBindingContext,
+ OUT PNDIS_HANDLE NdisFilterHandle)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+UINT
+EXPORT
+FddiNumberOfOpenFilterLongAddresses(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+UINT
+EXPORT
+FddiNumberOfOpenFilterShortAddresses(
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+VOID
+EXPORT
+FddiQueryGlobalFilterLongAddresses(
+ OUT PNDIS_STATUS Status,
+ IN PFDDI_FILTER Filter,
+ IN UINT SizeOfArray,
+ OUT PUINT NumberOfAddresses,
+ IN OUT CHAR AddressArray [] [FDDI_LENGTH_OF_LONG_ADDRESS])
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+FddiQueryGlobalFilterShortAddresses(
+ OUT PNDIS_STATUS Status,
+ IN PFDDI_FILTER Filter,
+ IN UINT SizeOfArray,
+ OUT PUINT NumberOfAddresses,
+ IN OUT CHAR AddressArray [] [FDDI_LENGTH_OF_SHORT_ADDRESS])
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+FddiQueryOpenFilterLongAddresses(
+ OUT PNDIS_STATUS Status,
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN UINT SizeOfArray,
+ OUT PUINT NumberOfAddresses,
+ IN OUT CHAR AddressArray [] [FDDI_LENGTH_OF_LONG_ADDRESS])
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+FddiQueryOpenFilterShortAddresses(
+ OUT PNDIS_STATUS Status,
+ IN PFDDI_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN UINT SizeOfArray,
+ OUT PUINT NumberOfAddresses,
+ IN OUT CHAR AddressArray [] [FDDI_LENGTH_OF_SHORT_ADDRESS])
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+FddiShouldAddressLoopBack(
+ IN PFDDI_FILTER Filter,
+ IN CHAR Address [],
+ IN UINT LengthOfAddress)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+VOID
+EXPORT
+NdisAllocateDmaChannel(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_HANDLE NdisDmaHandle,
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN PNDIS_DMA_DESCRIPTION DmaDescription,
+ IN ULONG MaximumLength)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisAllocateSharedMemory(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN ULONG Length,
+ IN BOOLEAN Cached,
+ OUT PVOID *VirtualAddress,
+ OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCompleteBufferPhysicalMapping(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN PNDIS_BUFFER Buffer,
+ IN ULONG PhysicalMapRegister)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCompleteRequest(
+ IN NDIS_HANDLE NdisBindingContext,
+ IN PNDIS_REQUEST NdisRequest,
+ IN NDIS_STATUS Status)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCompleteReset(
+ IN NDIS_HANDLE NdisBindingContext,
+ IN NDIS_STATUS Status)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCompleteSend(
+ IN NDIS_HANDLE NdisBindingContext,
+ IN PNDIS_PACKET Packet,
+ IN NDIS_STATUS Status)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCompleteTransferData(
+ IN NDIS_HANDLE NdisBindingContext,
+ IN PNDIS_PACKET Packet,
+ IN NDIS_STATUS Status,
+ IN UINT BytesTransferred)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisIndicateReceive(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisBindingContext,
+ IN NDIS_HANDLE MacReceiveContext,
+ IN PVOID HeaderBuffer,
+ IN UINT HeaderBufferSize,
+ IN PVOID LookaheadBuffer,
+ IN UINT LookaheadBufferSize,
+ IN UINT PacketSize)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisIndicateReceiveComplete(
+ IN NDIS_HANDLE NdisBindingContext)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisIndicateStatus(
+ IN NDIS_HANDLE NdisBindingContext,
+ IN NDIS_STATUS GeneralStatus,
+ IN PVOID StatusBuffer,
+ IN UINT StatusBufferSize)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisIndicateStatusComplete(
+ IN NDIS_HANDLE NdisBindingContext)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisPciAssignResources(
+ IN NDIS_HANDLE NdisMacHandle,
+ IN NDIS_HANDLE NdisWrapperHandle,
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG SlotNumber,
+ OUT PNDIS_RESOURCE_LIST *AssignedResources)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisReadBindingInformation (
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_STRING * Binding,
+ IN NDIS_HANDLE ConfigurationHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+ULONG
+EXPORT
+NdisReadDmaCounter(
+ IN NDIS_HANDLE NdisDmaHandle)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+VOID
+EXPORT
+NdisStartBufferPhysicalMapping(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN PNDIS_BUFFER Buffer,
+ IN ULONG PhysicalMapRegister,
+ IN BOOLEAN WriteToDevice,
+ OUT PNDIS_PHYSICAL_ADDRESS_UNIT PhysicalAddressArray,
+ OUT PUINT ArraySize)
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+NdisSynchronizeWithInterrupt(
+ IN PNDIS_INTERRUPT Interrupt,
+ IN PVOID SynchronizeFunction,
+ IN PVOID SynchronizeContext)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+VOID
+EXPORT
+NdisUnmapIoSpace(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN PVOID VirtualAddress,
+ IN UINT Length)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+TrChangeFunctionalAddress(
+ IN PTR_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN CHAR FunctionalAddressArray [TR_LENGTH_OF_FUNCTIONAL],
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+TrChangeGroupAddress(
+ IN PTR_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN CHAR GroupAddressArray [TR_LENGTH_OF_FUNCTIONAL],
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+BOOLEAN
+EXPORT
+TrCreateFilter(
+ IN TR_ADDRESS_CHANGE AddressChangeAction,
+ IN TR_GROUP_CHANGE GroupChangeAction,
+ IN TR_FILTER_CHANGE FilterChangeAction,
+ IN TR_DEFERRED_CLOSE CloseAction,
+ IN PUCHAR AdapterAddress,
+ IN PNDIS_SPIN_LOCK Lock,
+ OUT PTR_FILTER * Filter)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+VOID
+EXPORT
+TrDeleteFilter(
+ IN PTR_FILTER Filter)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+TrDeleteFilterOpenAdapter (
+ IN PTR_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_SUCCESS;
+}
+
+
+NDIS_STATUS
+EXPORT
+TrFilterAdjust(
+ IN PTR_FILTER Filter,
+ IN NDIS_HANDLE NdisFilterHandle,
+ IN PNDIS_REQUEST NdisRequest,
+ IN UINT FilterClasses,
+ IN BOOLEAN Set)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+TrFilterIndicateReceive(
+ IN PTR_FILTER Filter,
+ IN NDIS_HANDLE MacReceiveContext,
+ IN PVOID HeaderBuffer,
+ IN UINT HeaderBufferSize,
+ IN PVOID LookaheadBuffer,
+ IN UINT LookaheadBufferSize,
+ IN UINT PacketSize)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+TrFilterIndicateReceiveComplete(
+ IN PTR_FILTER Filter)
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+TrNoteFilterOpenAdapter(
+ IN PTR_FILTER Filter,
+ IN NDIS_HANDLE MacBindingHandle,
+ IN NDIS_HANDLE NdisBindingContext,
+ OUT PNDIS_HANDLE NdisFilterHandle)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+BOOLEAN
+EXPORT
+TrShouldAddressLoopBack(
+ IN PTR_FILTER Filter,
+ IN CHAR DestinationAddress [TR_LENGTH_OF_ADDRESS],
+ IN CHAR SourceAddress [TR_LENGTH_OF_ADDRESS])
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/50gone.c
+ * PURPOSE: Obsoleted functions in NDIS 5.0
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+VOID
+EXPORT
+NdisCompleteCloseAdapter(
+ IN NDIS_HANDLE NdisBindingContext,
+ IN NDIS_STATUS Status)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCompleteOpenAdapter(
+ IN NDIS_HANDLE NdisBindingContext,
+ IN NDIS_STATUS Status,
+ IN NDIS_STATUS OpenErrorStatus)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisDeregisterAdapter(
+ IN NDIS_HANDLE NdisAdapterHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisDeregisterAdapterShutdownHandler(
+ IN NDIS_HANDLE NdisAdapterHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisDeregisterMac(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisMacHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisFreeDmaChannel(
+ IN PNDIS_HANDLE NdisDmaHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisFreeSharedMemory(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN ULONG Length,
+ IN BOOLEAN Cached,
+ IN PVOID VirtualAddress,
+ IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisIMQueueMiniportCallback(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN W_MINIPORT_CALLBACK CallbackRoutine,
+ IN PVOID CallbackContext)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisIMRevertBack(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_HANDLE SwitchHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+NdisIMSwitchToMiniport(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ OUT PNDIS_HANDLE SwitchHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+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
+}
+
+
+VOID
+EXPORT
+NdisMapIoSpace(
+ OUT PNDIS_STATUS Status,
+ OUT PVOID *VirtualAddress,
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
+ IN UINT Length)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisOverrideBusNumber(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN NDIS_HANDLE MiniportAdapterHandle OPTIONAL,
+ IN ULONG BusNumber)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisQueryReceiveInformation(
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN NDIS_HANDLE MacContext,
+ OUT PLONGLONG TimeSent OPTIONAL,
+ OUT PLONGLONG TimeReceived OPTIONAL,
+ IN PUCHAR Buffer,
+ IN UINT BufferSize,
+ OUT PUINT SizeNeeded)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisReadMcaPosInformation(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN PUINT ChannelNumber,
+ OUT PNDIS_MCA_POS_DATA McaData)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisRegisterAdapter(
+ OUT PNDIS_HANDLE NdisAdapterHandle,
+ IN NDIS_HANDLE NdisMacHandle,
+ IN NDIS_HANDLE MacAdapterContext,
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN PNDIS_STRING AdapterName,
+ IN PVOID AdapterInformation)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisRegisterAdapterShutdownHandler(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN PVOID ShutdownContext,
+ IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ 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
+}
+
+
+VOID
+EXPORT
+NdisReleaseAdapterResources(
+ IN NDIS_HANDLE NdisAdapterHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisRemoveInterrupt(
+ IN PNDIS_INTERRUPT Interrupt)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisSetupDmaTransfer(
+ OUT PNDIS_STATUS Status,
+ IN PNDIS_HANDLE NdisDmaHandle,
+ IN PNDIS_BUFFER Buffer,
+ IN ULONG Offset,
+ IN ULONG Length,
+ IN BOOLEAN WriteToDevice)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisUpdateSharedMemory(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN ULONG Length,
+ IN PVOID VirtualAddress,
+ IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 4.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+/* EOF */
--- /dev/null
+#
+# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
+# file to this component. This file merely indirects to the real make file
+# that is shared by all the driver components of the Windows NT DDK
+#
+
+!INCLUDE $(NTMAKEENV)\makefile.def
--- /dev/null
+; NDIS Kernel Module - ReactOS Operating System
+
+LIBRARY NDIS.SYS
+
+EXPORTS
+ArcFilterDprIndicateReceive
+ArcFilterDprIndicateReceiveComplete
+EthChangeFilterAddresses
+EthCreateFilter
+EthDeleteFilter
+EthDeleteFilterOpenAdapter
+EthFilterAdjust
+;EthFilterDprIndicateReceive ?
+;EthFilterDprIndicateReceiveComplete ?
+EthFilterIndicateReceive
+EthFilterIndicateReceiveComplete
+EthNoteFilterOpenAdapter
+EthNumberOfOpenFilterAddresses
+EthQueryGlobalFilterAddresses
+EthQueryOpenFilterAddresses
+EthShouldAddressLoopBack
+FddiChangeFilterLongAddresses
+FddiChangeFilterShortAddresses
+FddiCreateFilter
+FddiDeleteFilter
+FddiDeleteFilterOpenAdapter
+FddiFilterAdjust
+;FddiFilterDprIndicateReceive ?
+;FddiFilterDprIndicateReceiveComplete ?
+FddiFilterIndicateReceive
+FddiFilterIndicateReceiveComplete
+FddiNoteFilterOpenAdapter
+FddiNumberOfOpenFilterLongAddresses
+FddiNumberOfOpenFilterShortAddresses
+FddiQueryGlobalFilterLongAddresses
+FddiQueryGlobalFilterShortAddresses
+FddiQueryOpenFilterLongAddresses
+FddiQueryOpenFilterShortAddresses
+FddiShouldAddressLoopBack
+NDIS_BUFFER_TO_SPAN_PAGES
+NdisAcquireReadWriteLock
+NdisAcquireSpinLock
+NdisAdjustBufferLength
+NdisAllocateBuffer
+NdisAllocateBufferPool
+NdisAllocateDmaChannel
+NdisAllocateMemory
+NdisAllocateMemoryWithTag
+NdisAllocatePacket
+NdisAllocatePacketPool
+NdisAllocatePacketPoolEx
+NdisAllocateSharedMemory
+NdisAllocateSpinLock
+NdisAnsiStringToUnicodeString
+NdisBufferLength
+NdisBufferVirtualAddress
+NdisCancelTimer
+NdisClAddParty
+NdisClCloseAddressFamily
+NdisClCloseCall
+NdisClDeregisterSap
+NdisClDropParty
+NdisClIncomingCallComplete
+NdisClMakeCall
+NdisClModifyCallQoS
+NdisClOpenAddressFamily
+NdisClRegisterSap
+NdisCloseAdapter
+NdisCloseConfiguration
+NdisCloseFile
+NdisCmActivateVc
+NdisCmAddPartyComplete
+NdisCmCloseAddressFamilyComplete
+NdisCmCloseCallComplete
+NdisCmDeactivateVc
+NdisCmDeregisterSapComplete
+NdisCmDispatchCallConnected
+NdisCmDispatchIncomingCall
+NdisCmDispatchIncomingCallQoSChange
+NdisCmDispatchIncomingCloseCall
+NdisCmDispatchIncomingDropParty
+NdisCmDropPartyComplete
+NdisCmMakeCallComplete
+NdisCmModifyCallQoSComplete
+NdisCmOpenAddressFamilyComplete
+NdisCmRegisterAddressFamily
+NdisCmRegisterSapComplete
+NdisCoCreateVc
+NdisCoDeleteVc
+NdisCoRequest
+NdisCoRequestComplete
+NdisCoSendPackets
+;NdisCompareAnsiString ?
+;NdisCompareUnicodeString ?
+NdisCompleteBindAdapter
+NdisCompleteCloseAdapter
+NdisCompleteDmaTransfer
+NdisCompleteOpenAdapter
+NdisCompletePnPEvent
+NdisCompleteQueryStatistics
+NdisCompleteUnbindAdapter
+NdisConvertStringToAtmAddress
+NdisCopyBuffer
+NdisCopyFromPacketToPacket
+NdisDeregisterAdapter
+NdisDeregisterAdapterShutdownHandler
+NdisDeregisterMac
+NdisDeregisterProtocol
+NdisDprAcquireSpinLock
+NdisDprAllocatePacket
+NdisDprAllocatePacketNonInterlocked
+NdisDprFreePacket
+NdisDprFreePacketNonInterlocked
+NdisDprReleaseSpinLock
+NdisEqualString
+NdisFlushBuffer
+NdisFreeBuffer
+NdisFreeBufferPool
+NdisFreeDmaChannel
+NdisFreeMemory
+NdisFreePacket
+NdisFreePacketPool
+NdisFreeSharedMemory
+NdisFreeSpinLock
+NdisGetBufferPhysicalArraySize
+NdisGetCurrentProcessorCounts
+NdisGetCurrentProcessorCpuUsage
+NdisGetCurrentSystemTime
+NdisGetDriverHandle
+NdisGetFirstBufferFromPacket
+NdisGetReceivedPacket
+NdisGetSystemUptime
+NdisIMAssociateMiniport
+NdisIMCancelInitializeDeviceInstance
+NdisIMCopySendCompletePerPacketInfo
+NdisIMCopySendPerPacketInfo
+NdisIMDeInitializeDeviceInstance
+NdisIMDeregisterLayeredMiniport
+NdisIMGetBindingContext
+NdisIMGetDeviceContext
+NdisIMInitializeDeviceInstance
+NdisIMInitializeDeviceInstanceEx
+NdisImmediateReadPciSlotInformation
+NdisImmediateReadPortUchar
+NdisImmediateReadPortUlong
+NdisImmediateReadPortUshort
+NdisImmediateReadSharedMemory
+NdisImmediateWritePciSlotInformation
+NdisImmediateWritePortUchar
+NdisImmediateWritePortUlong
+NdisImmediateWritePortUshort
+NdisImmediateWriteSharedMemory
+NdisIMQueueMiniportCallback
+NdisIMRegisterLayeredMiniport
+NdisIMRevertBack
+NdisIMSwitchToMiniport
+NdisInitAnsiString
+NdisInitializeEvent
+NdisInitializeInterrupt
+NdisInitializeReadWriteLock
+NdisInitializeString
+NdisInitializeTimer
+NdisInitializeWrapper
+NdisInitUnicodeString
+;NdisInterlockedAddLargeInterger ?
+NdisInterlockedAddUlong
+NdisInterlockedDecrement
+NdisInterlockedIncrement
+NdisInterlockedInsertHeadList
+NdisInterlockedInsertTailList
+NdisInterlockedPopEntrySList
+NdisInterlockedPushEntrySList
+NdisInterlockedRemoveHeadList
+NdisMAllocateMapRegisters
+NdisMAllocateSharedMemory
+NdisMAllocateSharedMemoryAsync
+NdisMapFile
+NdisMapIoSpace
+;NdisMatchPdoWithPacket ?
+NdisMCancelTimer
+NdisMCloseLog
+NdisMCmActivateVc
+NdisMCmCreateVc
+NdisMCmDeactivateVc
+NdisMCmDeleteVc
+NdisMCmRegisterAddressFamily
+NdisMCmRequest
+NdisMCoActivateVcComplete
+NdisMCoDeactivateVcComplete
+NdisMCoIndicateReceivePacket
+NdisMCoIndicateStatus
+NdisMCompleteBufferPhysicalMapping
+NdisMCoReceiveComplete
+NdisMCoRequestComplete
+NdisMCoSendComplete
+NdisMCreateLog
+NdisMDeregisterAdapterShutdownHandler
+NdisMDeregisterDevice
+NdisMDeregisterDmaChannel
+NdisMDeregisterInterrupt
+NdisMDeregisterIoPortRange
+NdisMFlushLog
+NdisMFreeMapRegisters
+NdisMFreeSharedMemory
+NdisMGetDeviceProperty
+NdisMIndicateStatus
+NdisMIndicateStatusComplete
+NdisMInitializeScatterGatherDma
+NdisMInitializeTimer
+NdisMMapIoSpace
+NdisMPciAssignResources
+NdisMPromoteMiniport
+NdisMQueryAdapterInstanceName
+NdisMQueryAdapterResources
+NdisMQueryInformationComplete
+NdisMReadDmaCounter
+NdisMRegisterAdapterShutdownHandler
+NdisMRegisterDevice
+NdisMRegisterDmaChannel
+NdisMRegisterInterrupt
+NdisMRegisterIoPortRange
+NdisMRegisterMiniport
+NdisMRegisterUnloadHandler
+NdisMRemoveMiniport
+NdisMResetComplete
+NdisMSendComplete
+NdisMSendResourcesAvailable
+NdisMSetAttributes
+NdisMSetAttributesEx
+NdisMSetInformationComplete
+NdisMSetMiniportSecondary
+NdisMSetPeriodicTimer
+NdisMSetTimer
+NdisMSleep
+NdisMStartBufferPhysicalMapping
+NdisMSynchronizeWithInterrupt
+NdisMTransferDataComplete
+NdisMUnmapIoSpace
+NdisMWanIndicateReceive
+NdisMWanIndicateReceiveComplete
+NdisMWanSendComplete
+NdisMWriteLogData
+NdisOpenAdapter
+NdisOpenConfiguration
+NdisOpenConfigurationKeyByIndex
+NdisOpenConfigurationKeyByName
+NdisOpenFile
+NdisOpenProtocolConfiguration
+;NdisOverrideBusNumber ?
+NdisPacketPoolUsage
+NdisPciAssignResources
+NdisQueryAdapterInstanceName
+;NdisQueryBindInstanceName?
+NdisQueryBuffer
+NdisQueryBufferOffset
+NdisQueryBufferSafe
+NdisQueryMapRegisterCount
+NdisReadConfiguration
+NdisReadEisaSlotInformation
+NdisReadEisaSlotInformationEx
+NdisReadMcaPosInformation
+NdisReadNetworkAddress
+NdisReadPciSlotInformation
+NdisReadPcmciaAttributeMemory
+;NdisReEnumerateProtocolBindings ?
+NdisRegisterAdapter
+NdisRegisterAdapterShutdownHandler
+NdisRegisterMac
+NdisRegisterProtocol
+;NdisRegisterTdiCallBack ?
+NdisReleaseAdapterResources
+NdisReleaseReadWriteLock
+NdisReleaseSpinLock
+NdisRemoveInterrupt
+NdisRequest
+NdisReset
+NdisResetEvent
+NdisReturnPackets
+NdisSend
+NdisSendPackets
+NdisSetEvent
+;NdisSetPacketPoolProtocolId ?
+;NdisSetProtocolFilter ?
+NdisSetTimer
+NdisSetupDmaTransfer
+NdisSystemProcessorCount
+NdisTerminateWrapper
+NdisTransferData
+NdisUnchainBufferAtBack
+NdisUnchainBufferAtFront
+NdisUnicodeStringToAnsiString
+NdisUnmapFile
+NdisUpcaseUnicodeString
+NdisUpdateSharedMemory
+NdisWaitEvent
+NdisWriteConfiguration
+;NdisWriteErrorLogEntry
+NdisWriteEventLogEntry
+NdisWritePciSlotInformation
+NdisWritePcmciaAttributeMemory
+TrChangeFunctionalAddress
+TrChangeGroupAddress
+TrCreateFilter
+TrDeleteFilter
+TrDeleteFilterOpenAdapter
+TrFilterAdjust
+;TrFilterDprIndicateReceive
+;TrFilterDprIndicateReceiveComplete
+TrFilterIndicateReceive
+TrFilterIndicateReceiveComplete
+TrNoteFilterOpenAdapter
+TrShouldAddressLoopBack
+
+; EOF
--- /dev/null
+#include <windows.h>
+#include <ntverp.h>
+
+#define VER_FILETYPE VFT_DRV
+#define VER_FILESUBTYPE VFT2_DRV_NETWORK
+#define VER_FILEDESCRIPTION_STR "NDIS library"
+#define VER_INTERNALNAME_STR "NDIS.SYS"
+#define VER_ORIGINALFILENAME_STR "NDIS.SYS"
+
+#include "common.ver"
--- /dev/null
+TARGETNAME=ndis
+TARGETPATH=..\objects
+TARGETTYPE=EXPORT_DRIVER
+
+TARGETLIBS=
+
+C_DEFINES=$(C_DEFINES) -DUNICODE -DNDIS_WRAPPER -DBINARY_COMPATIBLE=1
+
+INCLUDES=..\include;..\..\..\..\include\net;$(BASEDIR)\INC
+
+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
+
+MSC_WARNING_LEVEL=/W3 /WX
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/buffer.c
+ * PURPOSE: Buffer management routines
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <buffer.h>
+
+
+VOID
+EXPORT
+NdisAdjustBufferLength(
+ IN PNDIS_BUFFER Buffer,
+ IN UINT Length)
+/*
+ * FUNCTION: Modifies the length of an NDIS buffer
+ * ARGUMENTS:
+ * Buffer = Pointer to NDIS buffer descriptor
+ * Length = New size of buffer
+ */
+{
+ Buffer->ByteCount = Length;
+}
+
+
+ULONG
+EXPORT
+NDIS_BUFFER_TO_SPAN_PAGES(
+ IN PNDIS_BUFFER Buffer)
+/*
+ * FUNCTION: Determines how many physical pages a buffer is made of
+ * ARGUMENTS:
+ * Buffer = Pointer to NDIS buffer descriptor
+ */
+{
+ if (MmGetMdlByteCount(Buffer) == 0)
+ return 1;
+
+ return ADDRESS_AND_SIZE_TO_SPAN_PAGES(
+ MmGetMdlVirtualAddress(Buffer),
+ MmGetMdlByteCount(Buffer));
+}
+
+
+VOID
+EXPORT
+NdisAllocateBuffer(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_BUFFER * Buffer,
+ IN NDIS_HANDLE PoolHandle,
+ IN PVOID VirtualAddress,
+ IN UINT Length)
+/*
+ * FUNCTION: Allocates an NDIS buffer descriptor
+ * ARGUMENTS:
+ * Status = Address of buffer for status
+ * Buffer = Address of buffer for NDIS buffer descriptor
+ * PoolHandle = Handle returned by NdisAllocateBufferPool
+ * VirtualAddress = Pointer to virtual address of data buffer
+ * Length = Number of bytes in data buffer
+ */
+{
+ KIRQL OldIrql;
+ PNETWORK_HEADER Temp;
+ PNDIS_BUFFER_POOL Pool = (PNDIS_BUFFER_POOL)PoolHandle;
+
+ NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X) Buffer (0x%X) PoolHandle (0x%X) "
+ "VirtualAddress (0x%X) Length (%d)\n",
+ Status, Buffer, PoolHandle, VirtualAddress, Length));
+
+ KeAcquireSpinLock(&Pool->SpinLock, &OldIrql);
+
+ if (Pool->FreeList) {
+ Temp = Pool->FreeList;
+ Pool->FreeList = Temp->Next;
+
+ KeReleaseSpinLock(&Pool->SpinLock, OldIrql);
+
+ Temp->Next = NULL;
+
+#ifdef _MSC_VER
+ MmInitializeMdl(&Temp->Mdl, VirtualAddress, Length);
+ Temp->Mdl.MdlFlags |= (MDL_SOURCE_IS_NONPAGED_POOL | MDL_ALLOCATED_FIXED_SIZE);
+ Temp->Mdl.MappedSystemVa = VirtualAddress;
+#else
+ Temp->Mdl.Next = (PMDL)NULL;
+ Temp->Mdl.Size = (CSHORT)(sizeof(MDL) +
+ (ADDRESS_AND_SIZE_TO_SPAN_PAGES(VirtualAddress, Length) * sizeof(ULONG)));
+ Temp->Mdl.MdlFlags = (MDL_SOURCE_IS_NONPAGED_POOL | MDL_ALLOCATED_FIXED_SIZE);
+; Temp->Mdl.StartVa = (PVOID)PAGE_ROUND_DOWN(VirtualAddress);
+ Temp->Mdl.ByteOffset = (ULONG_PTR)(VirtualAddress - PAGE_ROUND_DOWN(VirtualAddress));
+ Temp->Mdl.ByteCount = Length;
+ Temp->Mdl.MappedSystemVa = VirtualAddress;
+#if 0
+ //Temp->Mdl.Process = PsGetCurrentProcess();
+#else
+ Temp->Mdl.Process = NULL;
+#endif
+#endif
+
+ Temp->BufferPool = Pool;
+
+ *Buffer = (PNDIS_BUFFER)Temp;
+ *Status = NDIS_STATUS_SUCCESS;
+ } else {
+ KeReleaseSpinLock(&Pool->SpinLock, OldIrql);
+ *Status = NDIS_STATUS_FAILURE;
+ }
+}
+
+
+VOID
+EXPORT
+NdisAllocateBufferPool(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_HANDLE PoolHandle,
+ IN UINT NumberOfDescriptors)
+/*
+ * FUNCTION: Allocates storage for an NDIS buffer pool
+ * ARGUMENTS:
+ * Status = Address of buffer for status
+ * PoolHandle = Address of buffer for pool handle
+ * NumberOfDescriptors = Size of buffer pool in number of descriptors
+ */
+{
+ UINT i;
+ PNDIS_BUFFER_POOL Pool;
+ PNETWORK_HEADER Buffer;
+
+ NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X) PoolHandle (0x%X) NumberOfDescriptors (%d).\n",
+ Status, PoolHandle, NumberOfDescriptors));
+
+ Pool = ExAllocatePool(NonPagedPool,
+ sizeof(NDIS_BUFFER_POOL) +
+ sizeof(NETWORK_HEADER) *
+ NumberOfDescriptors);
+ if (Pool) {
+ KeInitializeSpinLock(&Pool->SpinLock);
+
+ if (NumberOfDescriptors > 0) {
+ Buffer = &Pool->Buffers[0];
+ Pool->FreeList = Buffer;
+ for (i = 1; i < NumberOfDescriptors; i++) {
+ Buffer->Next = &Pool->Buffers[i];
+ Buffer = Buffer->Next;
+ }
+ Buffer->Next = NULL;
+ } else
+ Pool->FreeList = NULL;
+
+ *Status = NDIS_STATUS_SUCCESS;
+ *PoolHandle = (PNDIS_HANDLE)Pool;
+ } else
+ *Status = NDIS_STATUS_RESOURCES;
+}
+
+
+VOID
+EXPORT
+NdisAllocatePacket(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_PACKET * Packet,
+ IN NDIS_HANDLE PoolHandle)
+/*
+ * FUNCTION: Allocates an NDIS packet descriptor
+ * ARGUMENTS:
+ * Status = Address of buffer for status
+ * Packet = Address of buffer for packet descriptor
+ * PoolHandle = Handle returned by NdisAllocatePacketPool
+ */
+{
+ KIRQL OldIrql;
+ PNDIS_PACKET Temp;
+ PNDIS_PACKET_POOL Pool = (PNDIS_PACKET_POOL)PoolHandle;
+
+ NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X) Packet (0x%X) PoolHandle (0x%X).\n",
+ Status, Packet, PoolHandle));
+
+ KeAcquireSpinLock(&Pool->SpinLock.SpinLock, &OldIrql);
+
+ if (Pool->FreeList) {
+ Temp = Pool->FreeList;
+ Pool->FreeList = (PNDIS_PACKET)Temp->Private.Head;
+
+ KeReleaseSpinLock(&Pool->SpinLock.SpinLock, OldIrql);
+
+ RtlZeroMemory(&Temp->Private, sizeof(NDIS_PACKET_PRIVATE));
+ Temp->Private.Pool = Pool;
+
+ *Packet = Temp;
+ *Status = NDIS_STATUS_SUCCESS;
+ } else {
+ *Status = NDIS_STATUS_RESOURCES;
+ KeReleaseSpinLock(&Pool->SpinLock.SpinLock, OldIrql);
+ }
+}
+
+
+VOID
+EXPORT
+NdisAllocatePacketPool(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_HANDLE PoolHandle,
+ IN UINT NumberOfDescriptors,
+ IN UINT ProtocolReservedLength)
+/*
+ * FUNCTION: Allocates storage for an NDIS packet pool
+ * ARGUMENTS:
+ * Status = Address of buffer for status
+ * PoolHandle = Address of buffer for pool handle
+ * NumberOfDescriptors = Size of packet pool in number of descriptors
+ * ProtocolReservedLength = Size of protocol reserved area in bytes
+ */
+{
+ PNDIS_PACKET_POOL Pool;
+ UINT Size, Length, i;
+ PNDIS_PACKET Packet, NextPacket;
+
+ NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X) PoolHandle (0x%X) "
+ "NumberOfDescriptors (%d) ProtocolReservedLength (%d).\n",
+ Status, PoolHandle, NumberOfDescriptors, ProtocolReservedLength));
+
+ Length = sizeof(NDIS_PACKET) + ProtocolReservedLength;
+ Size = sizeof(NDIS_PACKET_POOL) + Length * NumberOfDescriptors;
+
+ Pool = ExAllocatePool(NonPagedPool, Size);
+ if (Pool) {
+ KeInitializeSpinLock(&Pool->SpinLock.SpinLock);
+ Pool->PacketLength = Length;
+
+ if (NumberOfDescriptors > 0) {
+ Packet = (PNDIS_PACKET)&Pool->Buffer;
+ Pool->FreeList = Packet;
+
+ NextPacket = (PNDIS_PACKET)((ULONG_PTR)Packet + Length);
+ for (i = 1; i < NumberOfDescriptors; i++) {
+ Packet->Private.Head = (PNDIS_BUFFER)NextPacket;
+ Packet = NextPacket;
+ NextPacket = (PNDIS_PACKET)((ULONG_PTR)Packet + Length);
+ }
+ Packet->Private.Head = NULL;
+ } else
+ Pool->FreeList = NULL;
+
+ *Status = NDIS_STATUS_SUCCESS;
+ *PoolHandle = (PNDIS_HANDLE)Pool;
+ } else
+ *Status = NDIS_STATUS_RESOURCES;
+}
+
+
+VOID
+EXPORT
+NdisAllocatePacketPoolEx(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_HANDLE PoolHandle,
+ IN UINT NumberOfDescriptors,
+ IN UINT NumberOfOverflowDescriptors,
+ IN UINT ProtocolReservedLength)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+ULONG
+EXPORT
+NdisBufferLength(
+ IN PNDIS_BUFFER Buffer)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+PVOID
+EXPORT
+NdisBufferVirtualAddress(
+ IN PNDIS_BUFFER Buffer)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NULL;
+}
+
+
+VOID
+EXPORT
+NdisCopyBuffer(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_BUFFER *Buffer,
+ IN NDIS_HANDLE PoolHandle,
+ IN PVOID MemoryDescriptor,
+ IN UINT Offset,
+ IN UINT Length)
+/*
+ * FUNCTION: Returns a new buffer descriptor for a (partial) buffer
+ * ARGUMENTS:
+ * Status = Address of a buffer to place status of operation
+ * Buffer = Address of a buffer to place new buffer descriptor
+ * PoolHandle = Handle returned by NdisAllocateBufferPool
+ * MemoryDescriptor = Pointer to a memory descriptor (possibly NDIS_BUFFER)
+ * Offset = Offset in buffer to start copying
+ * Length = Number of bytes to copy
+ */
+{
+ *Status = NDIS_STATUS_FAILURE;
+}
+
+
+__inline ULONG SkipToOffset(
+ PNDIS_BUFFER Buffer,
+ UINT Offset,
+ PVOID *Data,
+ PUINT Size)
+/*
+ * FUNCTION: Skips Offset bytes into a buffer chain
+ * ARGUMENTS:
+ * Buffer = Pointer to NDIS buffer
+ * Offset = Number of bytes to skip
+ * Data = Address of a pointer that on return will contain the
+ * address of the offset in the buffer
+ * Size = Address of a pointer that on return will contain the
+ * size of the destination buffer
+ * RETURNS:
+ * Offset into buffer, -1 if buffer chain was smaller than Offset bytes
+ * NOTES:
+ * Buffer may be NULL
+ */
+{
+ ULONG Address = 0;
+
+ for (;;) {
+
+ if (!Buffer)
+ return -1;
+
+ NdisQueryBuffer(Buffer, Data, Size);
+
+ if (Offset < *Size) {
+ Address += Offset;
+ *Size -= Offset;
+ break;
+ }
+
+ Offset -= *Size;
+
+ NdisGetNextBuffer(Buffer, &Buffer);
+ }
+
+ *Data = (PVOID)Address;
+
+ return Offset;
+}
+
+
+VOID
+EXPORT
+NdisCopyFromPacketToPacket(
+ IN PNDIS_PACKET Destination,
+ IN UINT DestinationOffset,
+ IN UINT BytesToCopy,
+ IN PNDIS_PACKET Source,
+ IN UINT SourceOffset,
+ OUT PUINT BytesCopied)
+/*
+ * FUNCTION: Copies data from one packet to another
+ * ARGUMENTS:
+ * Destination = Pointer to packet to copy data to
+ * DestinationOffset = Offset in destination packet to copy data to
+ * BytesToCopy = Number of bytes to copy
+ * Source = Pointer to packet descriptor to copy from
+ * SourceOffset = Offset in source packet to start copying from
+ * BytesCopied = Address of buffer to place number of bytes copied
+ */
+{
+ PNDIS_BUFFER SrcBuffer;
+ PNDIS_BUFFER DstBuffer;
+ PVOID DstData, SrcData;
+ UINT DstSize, SrcSize;
+ UINT Count, Total;
+
+ *BytesCopied = 0;
+
+ /* Skip DestinationOffset bytes in the destination packet */
+ NdisGetFirstBufferFromPacket(Destination, &DstBuffer, &DstData, &DstSize, &Total);
+ if (SkipToOffset(DstBuffer, DestinationOffset, &DstData, &DstSize) == -1)
+ return;
+
+ /* Skip SourceOffset bytes in the source packet */
+ NdisGetFirstBufferFromPacket(Source, &SrcBuffer, &SrcData, &SrcSize, &Total);
+ if (SkipToOffset(SrcBuffer, SourceOffset, &SrcData, &SrcSize) == -1)
+ return;
+
+ /* Copy the data */
+ for (Total = 0;;) {
+ /* Find out how many bytes we can copy at one time */
+ if (BytesToCopy < SrcSize)
+ Count = BytesToCopy;
+ else
+ Count = SrcSize;
+ if (DstSize < Count)
+ Count = DstSize;
+
+ RtlCopyMemory(DstData, SrcData, Count);
+
+ Total += Count;
+ BytesToCopy -= Count;
+ if (BytesToCopy == 0)
+ break;
+
+ DstSize -= Count;
+ if (DstSize == 0) {
+ /* No more bytes in destination buffer. Proceed to
+ the next buffer in the destination buffer chain */
+ NdisGetNextBuffer(DstBuffer, &DstBuffer);
+ if (!DstBuffer)
+ break;
+
+ NdisQueryBuffer(DstBuffer, &DstData, &DstSize);
+ }
+
+ SrcSize -= Count;
+ if (SrcSize == 0) {
+ /* No more bytes in source buffer. Proceed to
+ the next buffer in the source buffer chain */
+ NdisGetNextBuffer(SrcBuffer, &SrcBuffer);
+ if (!SrcBuffer)
+ break;
+
+ NdisQueryBuffer(SrcBuffer, &SrcData, &SrcSize);
+ }
+ }
+
+ *BytesCopied = Total;
+}
+
+
+VOID
+EXPORT
+NdisDprAllocatePacket(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_PACKET *Packet,
+ IN NDIS_HANDLE PoolHandle)
+/*
+ * FUNCTION: Allocates a packet at IRQL DISPATCH_LEVEL
+ * ARGUMENTS:
+ * Status = Address of buffer to place status of operation
+ * Packet = Address of buffer to place a pointer to a packet descriptor
+ * PoolHandle = Handle returned by NdisAllocatePacketPool
+ */
+{
+}
+
+
+VOID
+EXPORT
+NdisDprAllocatePacketNonInterlocked(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_PACKET *Packet,
+ IN NDIS_HANDLE PoolHandle)
+/*
+ * FUNCTION: Allocates a packet at IRQL DISPATCH_LEVEL (w/o synchronization)
+ * ARGUMENTS:
+ * Status = Address of buffer to place status of operation
+ * Packet = Address of buffer to place a pointer to a packet descriptor
+ * PoolHandle = Handle returned by NdisAllocatePacketPool
+ */
+{
+ *Status = NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisDprFreePacket(
+ IN PNDIS_PACKET Packet)
+/*
+ * FUNCTION: Frees a packet at IRQL DISPATCH_LEVEL
+ * ARGUMENTS:
+ * Packet = Pointer to packet to free
+ */
+{
+}
+
+
+VOID
+EXPORT
+NdisDprFreePacketNonInterlocked(
+ IN PNDIS_PACKET Packet)
+/*
+ * FUNCTION: Frees a packet at IRQL DISPATCH_LEVEL (w/o synchronization)
+ * ARGUMENTS:
+ * Packet = Pointer to packet to free
+ */
+{
+}
+
+
+VOID
+EXPORT
+NdisFreeBufferPool(
+ IN NDIS_HANDLE PoolHandle)
+/*
+ * FUNCTION: Frees storage allocated for an NDIS buffer pool
+ * ARGUMENTS:
+ * PoolHandle = Handle returned by NdisAllocateBufferPool
+ */
+{
+ ExFreePool((PVOID)PoolHandle);
+}
+
+
+VOID
+EXPORT
+NdisFreePacketPool(
+ IN NDIS_HANDLE PoolHandle)
+/*
+ * FUNCTION: Frees storage allocated for an NDIS packet pool
+ * ARGUMENTS:
+ * PoolHandle = Handle returned by NdisAllocatePacketPool
+ */
+{
+ ExFreePool((PVOID)PoolHandle);
+}
+
+
+VOID
+EXPORT
+NdisFreeBuffer(
+ IN PNDIS_BUFFER Buffer)
+/*
+ * FUNCTION: Puts an NDIS buffer descriptor back in it's pool
+ * ARGUMENTS:
+ * Buffer = Pointer to buffer descriptor
+ */
+{
+ KIRQL OldIrql;
+ PNDIS_BUFFER_POOL Pool;
+ PNETWORK_HEADER Temp = (PNETWORK_HEADER)Buffer;
+
+ NDIS_DbgPrint(MAX_TRACE, ("Buffer (0x%X).\n", Buffer));
+
+ Pool = Temp->BufferPool;
+
+ KeAcquireSpinLock(&Pool->SpinLock, &OldIrql);
+ Buffer->Next = (PMDL)Pool->FreeList;
+ Pool->FreeList = (PNETWORK_HEADER)Buffer;
+ KeReleaseSpinLock(&Pool->SpinLock, OldIrql);
+}
+
+
+VOID
+EXPORT
+NdisFreePacket(
+ IN PNDIS_PACKET Packet)
+/*
+ * FUNCTION: Puts an NDIS packet descriptor back in it's pool
+ * ARGUMENTS:
+ * Packet = Pointer to packet descriptor
+ */
+{
+ KIRQL OldIrql;
+
+ 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);
+}
+
+
+VOID
+EXPORT
+NdisGetBufferPhysicalArraySize(
+ IN PNDIS_BUFFER Buffer,
+ OUT PUINT ArraySize)
+/*
+ * FUNCTION: Returns number of discontiguous physical blocks backing a buffer
+ * ARGUMENTS:
+ * Buffer = Pointer to buffer descriptor
+ * ArraySize = Address of buffer to place number of physical blocks
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisGetFirstBufferFromPacket(
+ IN PNDIS_PACKET _Packet,
+ OUT PNDIS_BUFFER *_FirstBuffer,
+ OUT PVOID *_FirstBufferVA,
+ OUT PUINT _FirstBufferLength,
+ OUT PUINT _TotalBufferLength)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisReturnPackets(
+ IN PNDIS_PACKET *PacketsToReturn,
+ IN UINT NumberOfPackets)
+/*
+ * FUNCTION: Releases ownership of one or more packets
+ * ARGUMENTS:
+ * PacketsToReturn = Pointer to an array of pointers to packet descriptors
+ * NumberOfPackets = Number of pointers in descriptor pointer array
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+UINT
+EXPORT
+NdisPacketPoolUsage(
+ IN NDIS_HANDLE PoolHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+VOID
+EXPORT
+NdisQueryBuffer(
+ IN PNDIS_BUFFER Buffer,
+ OUT PVOID *VirtualAddress OPTIONAL,
+ OUT PUINT Length)
+/*
+ * FUNCTION:
+ * Queries an NDIS buffer for information
+ * ARGUMENTS:
+ * Buffer = Pointer to NDIS buffer to query
+ * VirtualAddress = Address of buffer to place virtual address
+ * Length = Address of buffer to place length of buffer
+ */
+{
+ if (VirtualAddress != NULL)
+ *(PVOID*)VirtualAddress = MmGetSystemAddressForMdl(Buffer);
+
+ *Length = MmGetMdlByteCount(Buffer);
+}
+
+
+VOID
+EXPORT
+NdisQueryBufferOffset(
+ IN PNDIS_BUFFER Buffer,
+ OUT PUINT Offset,
+ OUT PUINT Length)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisUnchainBufferAtBack(
+ IN OUT PNDIS_PACKET Packet,
+ OUT PNDIS_BUFFER *Buffer)
+/*
+ * FUNCTION:
+ * Removes the last buffer in a packet
+ * ARGUMENTS:
+ * Packet = Pointer to NDIS packet
+ * Buffer = Address of buffer to place pointer to removed NDIS buffer
+ */
+{
+ PNDIS_BUFFER NdisBuffer, Previous;
+
+ NdisQueryPacket(Packet,
+ NULL,
+ NULL,
+ &NdisBuffer,
+ NULL);
+ if (!NdisBuffer) {
+ *Buffer = NULL;
+ return;
+ }
+
+ Previous = NULL;
+ while (NdisBuffer->Next) {
+ Previous = NdisBuffer;
+ NdisBuffer = NdisBuffer->Next;
+ }
+
+ if (Previous) {
+ Previous->Next = NULL;
+ Packet->Private.Tail = Previous;
+ } else {
+ Packet->Private.Head = NULL;
+ Packet->Private.Tail = NULL;
+ }
+
+ Packet->Private.ValidCounts = FALSE;
+
+ *Buffer = NdisBuffer;
+}
+
+
+VOID
+EXPORT
+NdisUnchainBufferAtFront(
+ IN OUT PNDIS_PACKET Packet,
+ OUT PNDIS_BUFFER *Buffer)
+/*
+ * FUNCTION:
+ * Removes the first buffer in a packet
+ * ARGUMENTS:
+ * Packet = Pointer to NDIS packet
+ * Buffer = Address of buffer to place pointer to removed NDIS buffer
+ */
+{
+ PNDIS_BUFFER NdisBuffer;
+
+ NdisQueryPacket(Packet,
+ NULL,
+ NULL,
+ &NdisBuffer,
+ NULL);
+ if (!NdisBuffer) {
+ *Buffer = NULL;
+ return;
+ }
+
+ Packet->Private.Head = NdisBuffer->Next;
+
+ if (!NdisBuffer->Next)
+ Packet->Private.Tail = NULL;
+
+ NdisBuffer->Next = NULL;
+
+ Packet->Private.ValidCounts = FALSE;
+
+ *Buffer = NdisBuffer;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/cl.c
+ * PURPOSE: Services for connectionless NDIS drivers
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+NDIS_STATUS
+EXPIMP
+NdisClAddParty(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN NDIS_HANDLE ProtocolPartyContext,
+ IN OUT PCO_CALL_PARAMETERS CallParameters,
+ OUT PNDIS_HANDLE NdisPartyHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClCloseAddressFamily(
+ IN NDIS_HANDLE NdisAfHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClCloseCall(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
+ IN PVOID Buffer OPTIONAL,
+ IN UINT Size)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClDeregisterSap(
+ IN NDIS_HANDLE NdisSapHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClDropParty(
+ IN NDIS_HANDLE NdisPartyHandle,
+ IN PVOID Buffer OPTIONAL,
+ IN UINT Size)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPIMP
+NdisClIncomingCallComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClMakeCall(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN OUT PCO_CALL_PARAMETERS CallParameters,
+ IN NDIS_HANDLE ProtocolPartyContext OPTIONAL,
+ OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClModifyCallQoS(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClOpenAddressFamily(
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN PCO_ADDRESS_FAMILY AddressFamily,
+ IN NDIS_HANDLE ProtocolAfContext,
+ IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics,
+ IN UINT SizeOfClCharacteristics,
+ OUT PNDIS_HANDLE NdisAfHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPIMP
+NdisClRegisterSap(
+ IN NDIS_HANDLE NdisAfHandle,
+ IN NDIS_HANDLE ProtocolSapContext,
+ IN PCO_SAP Sap,
+ OUT PNDIS_HANDLE NdisSapHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/cm.c
+ * PURPOSE: Call Manager services
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+NDIS_STATUS
+EXPORT
+NdisCmActivateVc(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN OUT PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisCmAddPartyComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisPartyHandle,
+ IN NDIS_HANDLE CallMgrPartyContext OPTIONAL,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmCloseAddressFamilyComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisAfHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmCloseCallComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN NDIS_HANDLE NdisPartyHandle OPTIONAL)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisCmDeactivateVc(
+ IN NDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisCmDeregisterSapComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisSapHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmDispatchCallConnected(
+ IN NDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisCmDispatchIncomingCall(
+ IN NDIS_HANDLE NdisSapHandle,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisCmDispatchIncomingCallQoSChange(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmDispatchIncomingCloseCall(
+ IN NDIS_STATUS CloseStatus,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PVOID Buffer OPTIONAL,
+ IN UINT Size)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmDispatchIncomingDropParty(
+ IN NDIS_STATUS DropStatus,
+ IN NDIS_HANDLE NdisPartyHandle,
+ IN PVOID Buffer OPTIONAL,
+ IN UINT Size)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmDropPartyComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisPartyHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmMakeCallComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
+ IN NDIS_HANDLE CallMgrPartyContext OPTIONAL,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmModifyCallQoSComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCmOpenAddressFamilyComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisAfHandle,
+ IN NDIS_HANDLE CallMgrAfContext)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisCmRegisterAddressFamily(
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN PCO_ADDRESS_FAMILY AddressFamily,
+ IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics,
+ IN UINT SizeOfCmCharacteristics)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisCmRegisterSapComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisSapHandle,
+ IN NDIS_HANDLE CallMgrSapContext)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+
+NDIS_STATUS
+EXPORT
+NdisMCmActivateVc(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMCmCreateVc(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_HANDLE NdisAfHandle,
+ IN NDIS_HANDLE MiniportVcContext,
+ OUT PNDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMCmDeactivateVc(
+ IN NDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMCmDeleteVc(
+ IN NDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMCmRegisterAddressFamily(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PCO_ADDRESS_FAMILY AddressFamily,
+ IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics,
+ IN UINT SizeOfCmCharacteristics)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+NDIS_STATUS
+EXPORT
+NdisMCmRequest(
+ IN NDIS_HANDLE NdisAfHandle,
+ IN NDIS_HANDLE NdisVcHandle OPTIONAL,
+ IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
+ IN OUT PNDIS_REQUEST NdisRequest)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/co.c
+ * PURPOSE: Services for connection-oriented NDIS drivers
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+NDIS_STATUS
+EXPORT
+NdisCoCreateVc(
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN NDIS_HANDLE NdisAfHandle OPTIONAL,
+ IN NDIS_HANDLE ProtocolVcContext,
+ IN OUT PNDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisCoDeleteVc(
+ IN NDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisCoRequest(
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN NDIS_HANDLE NdisAfHandle OPTIONAL,
+ IN NDIS_HANDLE NdisVcHandle OPTIONAL,
+ IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
+ IN OUT PNDIS_REQUEST NdisRequest)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisCoRequestComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisAfHandle,
+ IN NDIS_HANDLE NdisVcHandle OPTIONAL,
+ IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
+ IN PNDIS_REQUEST NdisRequest)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisCoSendPackets(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PPNDIS_PACKET PacketArray,
+ IN UINT NumberOfPackets)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+
+VOID
+EXPORT
+NdisMCoActivateVcComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PCO_CALL_PARAMETERS CallParameters)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMCoDeactivateVcComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisVcHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMCoIndicateReceivePacket(
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PPNDIS_PACKET PacketArray,
+ IN UINT NumberOfPackets)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMCoIndicateStatus(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_HANDLE NdisVcHandle OPTIONAL,
+ IN NDIS_STATUS GeneralStatus,
+ IN PVOID StatusBuffer OPTIONAL,
+ IN ULONG StatusBufferSize)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMCoReceiveComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMCoRequestComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PNDIS_REQUEST Request)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMCoSendComplete(
+ IN NDIS_STATUS Status,
+ IN NDIS_HANDLE NdisVcHandle,
+ IN PNDIS_PACKET Packet)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/control.c
+ * PURPOSE: Program control routines
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+VOID
+EXPORT
+NdisAcquireReadWriteLock(
+ IN PNDIS_RW_LOCK Lock,
+ IN BOOLEAN fWrite,
+ IN PLOCK_STATE LockState)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisAcquireSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock)
+/*
+ * FUNCTION: Acquires a spin lock for exclusive access to a resource
+ * ARGUMENTS:
+ * SpinLock = Pointer to the initialized NDIS spin lock to be acquired
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisAllocateSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock)
+/*
+ * FUNCTION: Initializes for an NDIS spin lock
+ * ARGUMENTS:
+ * SpinLock = Pointer to an NDIS spin lock structure
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisDprAcquireSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock)
+/*
+ * FUNCTION: Acquires a spin lock from IRQL DISPATCH_LEVEL
+ * ARGUMENTS:
+ * SpinLock = Pointer to the initialized NDIS spin lock to be acquired
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisDprReleaseSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock)
+/*
+ * FUNCTION: Releases an acquired spin lock from IRQL DISPATCH_LEVEL
+ * ARGUMENTS:
+ * SpinLock = Pointer to the acquired NDIS spin lock to be released
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisFreeSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock)
+/*
+ * FUNCTION: Releases a spin lock initialized with NdisAllocateSpinLock
+ * ARGUMENTS:
+ * SpinLock = Pointer to an initialized NDIS spin lock
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisGetCurrentProcessorCpuUsage(
+ PULONG pCpuUsage)
+/*
+ * FUNCTION: Returns how busy the current processor is as a percentage
+ * ARGUMENTS:
+ * pCpuUsage = Pointer to a buffer to place CPU usage
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisInitializeEvent(
+ IN PNDIS_EVENT Event)
+/*
+ * FUNCTION: Initializes an event to be used for synchronization
+ * ARGUMENTS:
+ * Event = Pointer to an NDIS event structure to be initialized
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisReleaseSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock)
+/*
+ * FUNCTION: Releases a spin lock previously acquired with NdisAcquireSpinLock
+ * ARGUMENTS:
+ * SpinLock = Pointer to the acquired NDIS spin lock to be released
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisResetEvent(
+ IN PNDIS_EVENT Event)
+/*
+ * FUNCTION: Clears the signaled state of an event
+ * ARGUMENTS:
+ * Event = Pointer to the initialized event object to be reset
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisSetEvent(
+ IN PNDIS_EVENT Event)
+/*
+ * FUNCTION: Sets an event to a signaled state if not already signaled
+ * ARGUMENTS:
+ * Event = Pointer to the initialized event object to be set
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+NdisWaitEvent(
+ IN PNDIS_EVENT Event,
+ IN UINT MsToWait)
+/*
+ * FUNCTION: Waits for an event to become signaled
+ * ARGUMENTS:
+ * Event = Pointer to the initialized event object to wait for
+ * MsToWait = Maximum milliseconds to wait for the event to become signaled
+ * RETURNS:
+ * TRUE if the event is in the signaled state
+ */
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/hardware.c
+ * PURPOSE: Hardware related routines
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+ULONG
+EXPORT
+NdisImmediateReadPciSlotInformation(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG SlotNumber,
+ IN ULONG Offset,
+ IN PVOID Buffer,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+ULONG
+EXPORT
+NdisImmediateWritePciSlotInformation(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG SlotNumber,
+ IN ULONG Offset,
+ IN PVOID Buffer,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMPciAssignResources(
+ IN NDIS_HANDLE MiniportHandle,
+ IN ULONG SlotNumber,
+ OUT PNDIS_RESOURCE_LIST *AssignedResources)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisMQueryAdapterResources(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ OUT PNDIS_RESOURCE_LIST ResourceList,
+ IN OUT PUINT BufferSize)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisQueryMapRegisterCount(
+ IN NDIS_INTERFACE_TYPE BusType,
+ OUT PUINT MapRegisterCount)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisReadEisaSlotInformation(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ OUT PUINT SlotNumber,
+ OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisReadEisaSlotInformationEx(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ OUT PUINT SlotNumber,
+ OUT PNDIS_EISA_FUNCTION_INFORMATION *EisaData,
+ OUT PUINT NumberOfFunctions)
+{
+ UNIMPLEMENTED
+}
+
+
+ULONG
+EXPORT
+NdisReadPciSlotInformation(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN ULONG SlotNumber,
+ IN ULONG Offset,
+ IN PVOID Buffer,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+ULONG
+EXPORT
+NdisWritePciSlotInformation(
+ IN NDIS_HANDLE NdisAdapterHandle,
+ IN ULONG SlotNumber,
+ IN ULONG Offset,
+ IN PVOID Buffer,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/io.c
+ * PURPOSE: I/O related routines
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+#include <miniport.h>
+
+
+VOID HandleDeferredProcessing(
+ IN PKDPC Dpc,
+ IN PVOID DeferredContext,
+ IN PVOID SystemArgument1,
+ IN PVOID SystemArgument2)
+/*
+ * FUNCTION: Deferred interrupt processing routine
+ * ARGUMENTS:
+ * Dpc = Pointer to DPC object
+ * DeferredContext = Pointer to context information (LOGICAL_ADAPTER)
+ * SystemArgument1 = Unused
+ * SystemArgument2 = Unused
+ */
+{
+ PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext);
+
+ /* Call the deferred interrupt service handler for this adapter */
+ (*Adapter->Miniport->Chars.HandleInterruptHandler)(Adapter);
+}
+
+
+BOOLEAN ServiceRoutine(
+ IN PKINTERRUPT Interrupt,
+ IN PVOID ServiceContext)
+/*
+ * FUNCTION: Interrupt service routine
+ * ARGUMENTS:
+ * Interrupt = Pointer to interrupt object
+ * ServiceContext = Pointer to context information (LOGICAL_ADAPTER)
+ * RETURNS
+ * TRUE if our device generated the interrupt
+ */
+{
+ BOOLEAN InterruptRecognized;
+ BOOLEAN QueueMiniportHandleInterrupt;
+ PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(ServiceContext);
+
+ /* FIXME: Support shared interrupts */
+
+ (*Adapter->Miniport->Chars.ISRHandler)(&InterruptRecognized,
+ &QueueMiniportHandleInterrupt, Adapter);
+
+ if (QueueMiniportHandleInterrupt) {
+ KeInsertQueueDpc(&Adapter->InterruptObject->InterruptDpc, NULL, NULL);
+ }
+
+ return TRUE;
+}
+
+
+VOID
+EXPORT
+NdisCompleteDmaTransfer(
+ OUT PNDIS_STATUS Status,
+ IN PNDIS_HANDLE NdisDmaHandle,
+ IN PNDIS_BUFFER Buffer,
+ IN ULONG Offset,
+ IN ULONG Length,
+ IN BOOLEAN WriteToDevice)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisFlushBuffer(
+ IN PNDIS_BUFFER Buffer,
+ IN BOOLEAN WriteToDevice)
+{
+ UNIMPLEMENTED
+}
+
+
+ULONG
+EXPORT
+NdisGetCacheFillSize(
+ VOID)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+VOID
+EXPORT
+NdisImmediateReadPortUchar(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG Port,
+ OUT PUCHAR Data)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisImmediateReadPortUlong(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG Port,
+ OUT PULONG Data)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisImmediateReadPortUshort(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG Port,
+ OUT PUSHORT Data)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisImmediateWritePortUchar(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG Port,
+ IN UCHAR Data)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisImmediateWritePortUlong(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG Port,
+ IN ULONG Data)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisImmediateWritePortUshort(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG Port,
+ IN USHORT Data)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMAllocateMapRegisters(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN UINT DmaChannel,
+ IN BOOLEAN Dma32BitAddresses,
+ IN ULONG PhysicalMapRegistersNeeded,
+ IN ULONG MaximumPhysicalMapping)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisMCompleteDmaTransfer(
+ OUT PNDIS_STATUS Status,
+ IN PNDIS_HANDLE MiniportDmaHandle,
+ IN PNDIS_BUFFER Buffer,
+ IN ULONG Offset,
+ IN ULONG Length,
+ IN BOOLEAN WriteToDevice)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMDeregisterDmaChannel(
+ IN PNDIS_HANDLE MiniportDmaHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMDeregisterInterrupt(
+ IN PNDIS_MINIPORT_INTERRUPT Interrupt)
+/*
+ * FUNCTION: Releases an interrupt vector
+ * ARGUMENTS:
+ * Interrupt = Pointer to interrupt object
+ */
+{
+ IoDisconnectInterrupt(Interrupt->InterruptObject);
+}
+
+
+VOID
+EXPORT
+NdisMDeregisterIoPortRange(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN UINT InitialPort,
+ IN UINT NumberOfPorts,
+ IN PVOID PortOffset)
+/*
+ * FUNCTION: Releases a register mapping to I/O ports
+ * ARGUMENTS:
+ * MiniportAdapterHandle = Specifies handle input to MiniportInitialize
+ * InitialPort = Bus-relative base port address of a range to be mapped
+ * NumberOfPorts = Specifies number of ports to be mapped
+ * PortOffset = Pointer to mapped base port address
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMFreeMapRegisters(
+ IN NDIS_HANDLE MiniportAdapterHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMMapIoSpace(
+ OUT PVOID *VirtualAddress,
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
+ IN UINT Length)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisMQueryInformationComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_STATUS Status)
+{
+ UNIMPLEMENTED
+}
+
+
+ULONG
+EXPORT
+NdisMReadDmaCounter(
+ IN NDIS_HANDLE MiniportDmaHandle)
+{
+ UNIMPLEMENTED
+
+ return 0;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMRegisterDmaChannel(
+ OUT PNDIS_HANDLE MiniportDmaHandle,
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN UINT DmaChannel,
+ IN BOOLEAN Dma32BitAddresses,
+ IN PNDIS_DMA_DESCRIPTION DmaDescription,
+ IN ULONG MaximumLength)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMRegisterInterrupt(
+ OUT PNDIS_MINIPORT_INTERRUPT Interrupt,
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN UINT InterruptVector,
+ IN UINT InterruptLevel,
+ IN BOOLEAN RequestIsr,
+ IN BOOLEAN SharedInterrupt,
+ IN NDIS_INTERRUPT_MODE InterruptMode)
+/*
+ * FUNCTION: Claims access to an interrupt vector
+ * ARGUMENTS:
+ * Interrupt = Address of interrupt object to initialize
+ * MiniportAdapterHandle = Specifies handle input to MiniportInitialize
+ * InterruptVector = Specifies bus-relative vector to register
+ * InterruptLevel = Specifies bus-relative DIRQL vector for interrupt
+ * RequestIsr = TRUE if MiniportISR should always be called
+ * SharedInterrupt = TRUE if other devices may use tha same interrupt
+ * InterruptMode = Specifies type of interrupt
+ * RETURNS:
+ * Status of operation
+ */
+{
+ NTSTATUS NtStatus;
+ ULONG MappedIRQ;
+ KIRQL DIrql;
+ KAFFINITY Affinity = 0xFFFFFFFF;
+ PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(MiniportAdapterHandle);
+
+ RtlZeroMemory(Interrupt, sizeof(NDIS_MINIPORT_INTERRUPT));
+
+ KeInitializeSpinLock(&Interrupt->DpcCountLock);
+
+ KeInitializeDpc(&Interrupt->InterruptDpc, HandleDeferredProcessing, Adapter);
+
+ KeInitializeEvent(&Interrupt->DpcsCompletedEvent,
+ NotificationEvent, FALSE);
+
+ Interrupt->SharedInterrupt = SharedInterrupt;
+
+ Adapter->InterruptObject = Interrupt;
+
+ MappedIRQ = HalGetInterruptVector(Adapter->AdapterType, 0,
+ InterruptLevel, InterruptVector, &DIrql, &Affinity);
+
+ NtStatus = IoConnectInterrupt(&Interrupt->InterruptObject, ServiceRoutine, Adapter,
+ &Interrupt->DpcCountLock, MappedIRQ, DIrql, DIrql, InterruptMode,
+ SharedInterrupt, Affinity, FALSE);
+
+ return NDIS_STATUS_SUCCESS;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMRegisterIoPortRange(
+ OUT PVOID *PortOffset,
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN UINT InitialPort,
+ IN UINT NumberOfPorts)
+/*
+ * FUNCTION: Sets up driver access to device I/O ports
+ * ARGUMENTS:
+ * PortOffset = Address of buffer to place mapped base port address
+ * MiniportAdapterHandle = Specifies handle input to MiniportInitialize
+ * InitialPort = Bus-relative base port address of a range to be mapped
+ * NumberOfPorts = Specifies number of ports to be mapped
+ * RETURNS:
+ * Status of operation
+ */
+{
+#if 0
+ NTSTATUS NtStatus;
+ BOOLEAN ConflictDetected;
+ PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(MiniportAdapterHandle);
+ PMINIPORT_DRIVER Miniport = Adapter->Miniport;
+
+ /* Non-PnP hardware. NT5 function */
+ NtStatus = IoReportResourceForDetection(
+ Miniport->DriverObject,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ 0,
+ &ConflictDetected);
+ return NDIS_STATUS_FAILURE;
+#else
+ /* It's yours! */
+ *PortOffset = (PVOID)InitialPort;
+
+ return NDIS_STATUS_SUCCESS;
+#endif
+}
+
+
+VOID
+EXPORT
+NdisMSetInformationComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_STATUS Status)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMSetupDmaTransfer(
+ OUT PNDIS_STATUS Status,
+ IN PNDIS_HANDLE MiniportDmaHandle,
+ IN PNDIS_BUFFER Buffer,
+ IN ULONG Offset,
+ IN ULONG Length,
+ IN BOOLEAN WriteToDevice)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMTransferDataComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PNDIS_PACKET Packet,
+ IN NDIS_STATUS Status,
+ IN UINT BytesTransferred)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMUnmapIoSpace(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PVOID VirtualAddress,
+ IN UINT Length)
+{
+ UNIMPLEMENTED
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/main.c
+ * PURPOSE: Driver entry point
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+#ifdef DBG
+/* See debug.h for debug/trace constants */
+DWORD DebugTraceLevel = MIN_TRACE;
+#endif /* DBG */
+
+
+VOID MainUnload(
+ PDRIVER_OBJECT DriverObject)
+/*
+ * FUNCTION: Unloads the driver
+ * ARGUMENTS:
+ * DriverObject = Pointer to driver object created by the system
+ */
+{
+ NDIS_DbgPrint(MAX_TRACE, ("Leaving.\n"));
+}
+
+
+NTSTATUS
+#ifndef _MSC_VER
+STDCALL
+#endif
+DriverEntry(
+ PDRIVER_OBJECT DriverObject,
+ PUNICODE_STRING RegistryPath)
+/*
+ * FUNCTION: Main driver entry point
+ * ARGUMENTS:
+ * DriverObject = Pointer to a driver object for this driver
+ * RegistryPath = Registry node for configuration parameters
+ * RETURNS:
+ * Status of driver initialization
+ */
+{
+ NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
+
+#ifdef _MSC_VER
+ DriverObject->DriverUnload = MainUnload;
+#else
+ DriverObject->DriverUnload = (PDRIVER_UNLOAD)MainUnload;
+#endif
+
+ return STATUS_SUCCESS;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/memory.c
+ * PURPOSE: Memory management routines
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+NDIS_STATUS
+EXPORT
+NdisAllocateMemoryWithTag(
+ OUT PVOID *VirtualAddress,
+ IN UINT Length,
+ IN ULONG Tag)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisCreateLookaheadBufferFromSharedMemory(
+ IN PVOID pSharedMemory,
+ IN UINT LookaheadLength,
+ OUT PVOID *pLookaheadBuffer)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisDestroyLookaheadBufferFromSharedMemory(
+ IN PVOID pLookaheadBuffer)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMoveFromMappedMemory(
+ OUT PVOID Destination,
+ IN PVOID Source,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMoveMappedMemory(
+ OUT PVOID Destination,
+ IN PVOID Source,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMoveToMappedMemory(
+ OUT PVOID Destination,
+ IN PVOID Source,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMUpdateSharedMemory(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN ULONG Length,
+ IN PVOID VirtualAddress,
+ IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisAllocateMemory(
+ OUT PVOID *VirtualAddress,
+ IN UINT Length,
+ IN UINT MemoryFlags,
+ IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
+/*
+ * FUNCTION: Allocates a block of memory
+ * ARGUMENTS:
+ * VirtualAddress = Address of buffer to place virtual
+ * address of the allocated memory
+ * Length = Size of the memory block to allocate
+ * MemoryFlags = Flags to specify special restrictions
+ * HighestAcceptableAddress = Specifies -1
+ */
+{
+ PVOID Block;
+
+ if (MemoryFlags & NDIS_MEMORY_CONTIGUOUS) {
+ /* FIXME */
+ *VirtualAddress = NULL;
+ return NDIS_STATUS_FAILURE;
+ }
+
+ if (MemoryFlags & NDIS_MEMORY_NONCACHED) {
+ /* FIXME */
+ *VirtualAddress = NULL;
+ return NDIS_STATUS_FAILURE;
+ }
+
+ /* Plain nonpaged memory */
+ Block = ExAllocatePool(NonPagedPool, Length);
+ *VirtualAddress = Block;
+ if (!Block)
+ return NDIS_STATUS_FAILURE;
+
+ return NDIS_STATUS_SUCCESS;
+}
+
+
+VOID
+EXPORT
+NdisFreeMemory(
+ IN PVOID VirtualAddress,
+ IN UINT Length,
+ IN UINT MemoryFlags)
+/*
+ * FUNCTION: Frees a memory block allocated with NdisAllocateMemory
+ * ARGUMENTS:
+ * VirtualAddress = Pointer to the base virtual address of the allocated memory
+ * Length = Size of the allocated memory block as passed to NdisAllocateMemory
+ * MemoryFlags = Memory flags passed to NdisAllocateMemory
+ */
+{
+ if (MemoryFlags & NDIS_MEMORY_CONTIGUOUS) {
+ /* FIXME */
+ return;
+ }
+
+ if (MemoryFlags & NDIS_MEMORY_NONCACHED) {
+ /* FIXME */
+ return;
+ }
+
+ /* Plain nonpaged memory */
+ ExFreePool(VirtualAddress);
+}
+
+
+VOID
+EXPORT
+NdisImmediateReadSharedMemory(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG SharedMemoryAddress,
+ OUT PUCHAR Buffer,
+ IN ULONG Length)
+{
+}
+
+
+VOID
+EXPORT
+NdisImmediateWriteSharedMemory(
+ IN NDIS_HANDLE WrapperConfigurationContext,
+ IN ULONG SharedMemoryAddress,
+ IN PUCHAR Buffer,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMAllocateSharedMemory(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN ULONG Length,
+ IN BOOLEAN Cached,
+ OUT PVOID *VirtualAddress,
+ OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMAllocateSharedMemoryAsync(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN ULONG Length,
+ IN BOOLEAN Cached,
+ IN PVOID Context)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisMFreeSharedMemory(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN ULONG Length,
+ IN BOOLEAN Cached,
+ IN PVOID VirtualAddress,
+ IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+ UNIMPLEMENTED
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/miniport.c
+ * PURPOSE: Routines used by NDIS miniport drivers
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <miniport.h>
+
+
+/* Number of medias we know */
+#define MEDIA_ARRAY_SIZE 15
+
+static NDIS_MEDIUM MediaArray[MEDIA_ARRAY_SIZE] = {
+ NdisMedium802_3,
+ NdisMedium802_5,
+ NdisMediumFddi,
+ NdisMediumWan,
+ NdisMediumLocalTalk,
+ NdisMediumDix,
+ NdisMediumArcnetRaw,
+ NdisMediumArcnet878_2,
+ NdisMediumAtm,
+ NdisMediumWirelessWan,
+ NdisMediumIrda,
+ NdisMediumBpc,
+ NdisMediumCoWan,
+ NdisMedium1394,
+ NdisMediumMax
+};
+
+
+LIST_ENTRY MiniportListHead;
+KSPIN_LOCK MiniportListLock;
+LIST_ENTRY AdapterListHead;
+KSPIN_LOCK AdapterListLock;
+
+
+VOID MiniportWorker(
+ PVOID Context)
+/*
+ * FUNCTION: Worker function for MiniportXxx functions
+ * ARGUMENTS:
+ * Context = Pointer to context information (MINIPORT_DRIVER)
+ */
+{
+}
+
+
+PLOGICAL_ADAPTER MiniLocateDevice(
+ PNDIS_STRING AdapterName)
+/*
+ * FUNCTION: Returns the logical adapter object for a specific adapter
+ * ARGUMENTS:
+ * AdapterName = Pointer to name of adapter
+ * RETURNS:
+ * Pointer to logical adapter object, or NULL if none was found.
+ * If found, the adapter is referenced for the caller. The caller
+ * is responsible for dereferencing after use
+ */
+{
+ KIRQL OldIrql1;
+ KIRQL OldIrql2;
+ PLIST_ENTRY CurrentMEntry;
+ PLIST_ENTRY CurrentAEntry;
+ PMINIPORT_DRIVER Miniport;
+ PLOGICAL_ADAPTER Adapter;
+
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Called. AdapterName (0x%X).\n", AdapterName));
+
+ KeAcquireSpinLock(&MiniportListLock, &OldIrql1);
+ CurrentMEntry = MiniportListHead.Flink;
+ while (CurrentMEntry != &MiniportListHead) {
+ Miniport = CONTAINING_RECORD(CurrentMEntry, MINIPORT_DRIVER, ListEntry);
+
+ KeAcquireSpinLock(&AdapterListLock, &OldIrql2);
+ CurrentAEntry = AdapterListHead.Flink;
+ while (CurrentAEntry != &AdapterListHead) {
+ Adapter = CONTAINING_RECORD(CurrentAEntry, LOGICAL_ADAPTER, ListEntry);
+
+ if (RtlCompareUnicodeString(AdapterName, &Adapter->DeviceName, TRUE) == 0) {
+ ReferenceObject(Adapter);
+ KeReleaseSpinLock(&AdapterListLock, OldIrql2);
+ KeReleaseSpinLock(&MiniportListLock, OldIrql1);
+ return Adapter;
+ }
+
+ CurrentAEntry = CurrentAEntry->Flink;
+ }
+ KeReleaseSpinLock(&AdapterListLock, OldIrql2);
+
+ CurrentMEntry = CurrentMEntry->Flink;
+ }
+ KeReleaseSpinLock(&MiniportListLock, OldIrql1);
+
+ return NULL;
+}
+
+
+NDIS_STATUS
+MiniQueryInformation(
+ PLOGICAL_ADAPTER Adapter,
+ NDIS_OID Oid,
+ ULONG Size,
+ PULONG BytesWritten)
+/*
+ * FUNCTION: Queries a logical adapter for properties
+ * ARGUMENTS:
+ * Adapter = Pointer to the logical adapter object to query
+ * Oid = Specifies the oid to query for
+ * Size = If non-zero overrides the length in the adapter object
+ * BytesWritten = Address of buffer to place number of bytes written
+ * RETURNS:
+ * Status of operation
+ * NOTES:
+ * If the specified buffer is too small, a new buffer is allocated,
+ * and the query is attempted again
+ */
+{
+ NDIS_STATUS NdisStatus;
+ ULONG BytesNeeded;
+
+ if (Adapter->QueryBufferLength == 0) {
+ Adapter->QueryBuffer = ExAllocatePool(NonPagedPool, 32);
+
+ if (!Adapter->QueryBuffer) {
+ NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ return NDIS_STATUS_RESOURCES;
+ }
+
+ Adapter->QueryBufferLength = 32;
+ }
+
+ BytesNeeded = (Size = 0)? Adapter->QueryBufferLength : Size;
+
+ NdisStatus = (*Adapter->Miniport->Chars.QueryInformationHandler)(
+ Adapter, Oid, &BytesNeeded,
+ Adapter->QueryBufferLength,
+ BytesWritten, &BytesNeeded);
+
+ if ((NT_SUCCESS(NdisStatus)) || (NdisStatus == NDIS_STATUS_PENDING)) {
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Miniport returned status (0x%X).\n", NdisStatus));
+ return NdisStatus;
+ }
+
+ if (NdisStatus == NDIS_STATUS_INVALID_LENGTH) {
+ ExFreePool(Adapter->QueryBuffer);
+
+ Adapter->QueryBufferLength += BytesNeeded;
+ Adapter->QueryBuffer = ExAllocatePool(
+ NonPagedPool, Adapter->QueryBufferLength);
+
+ if (!Adapter->QueryBuffer) {
+ NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ return NDIS_STATUS_RESOURCES;
+ }
+
+ NdisStatus = (*Adapter->Miniport->Chars.QueryInformationHandler)(
+ Adapter, Oid, Adapter->QueryBuffer, Size, BytesWritten, &BytesNeeded);
+ }
+
+ return NdisStatus;
+}
+
+
+VOID
+EXPORT
+NdisMCloseLog(
+ IN NDIS_HANDLE LogHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMCreateLog(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN UINT Size,
+ OUT PNDIS_HANDLE LogHandle)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisMDeregisterAdapterShutdownHandler(
+ IN NDIS_HANDLE MiniportHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMFlushLog(
+ IN NDIS_HANDLE LogHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMIndicateStatus(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_STATUS GeneralStatus,
+ IN PVOID StatusBuffer,
+ IN UINT StatusBufferSize)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMIndicateStatusComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisInitializeWrapper(
+ OUT PNDIS_HANDLE NdisWrapperHandle,
+ IN PVOID SystemSpecific1,
+ IN PVOID SystemSpecific2,
+ IN PVOID SystemSpecific3)
+/*
+ * FUNCTION: Notifies the NDIS library that a new miniport is initializing
+ * ARGUMENTS:
+ * NdisWrapperHandle = Address of buffer to place NDIS wrapper handle
+ * SystemSpecific1 = Pointer to the driver's driver object
+ * SystemSpecific2 = Pointer to the driver's registry path
+ * SystemSpecific3 = Always NULL
+ */
+{
+ PMINIPORT_DRIVER Miniport;
+
+ Miniport = ExAllocatePool(NonPagedPool, sizeof(MINIPORT_DRIVER));
+ if (!Miniport) {
+ NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ *NdisWrapperHandle = NULL;
+ return;
+ }
+
+ RtlZeroMemory(Miniport, sizeof(MINIPORT_DRIVER));
+
+ KeInitializeSpinLock(&Miniport->Lock);
+
+ Miniport->RefCount = 1;
+
+ ExInitializeWorkItem(&Miniport->WorkItem, MiniportWorker, Miniport);
+
+ Miniport->DriverObject = (PDRIVER_OBJECT)SystemSpecific1;
+ /* FIXME: Copy RegistryPath */
+ //Miniport->RegistryPath = SystemSpecific2;
+
+ /* Put miniport in global miniport list */
+ ExInterlockedInsertTailList(&MiniportListHead,
+ &Miniport->ListEntry,
+ &MiniportListLock);
+
+ *NdisWrapperHandle = Miniport;
+}
+
+
+VOID
+EXPORT
+NdisMRegisterAdapterShutdownHandler(
+ IN NDIS_HANDLE MiniportHandle,
+ IN PVOID ShutdownContext,
+ IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
+{
+ UNIMPLEMENTED
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMRegisterMiniport(
+ IN NDIS_HANDLE NdisWrapperHandle,
+ IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
+ IN UINT CharacteristicsLength)
+/*
+ * FUNCTION: Registers a miniport's MiniportXxx entry points with the NDIS library
+ * ARGUMENTS:
+ * NdisWrapperHandle = Pointer to handle returned by NdisMInitializeWrapper
+ * MiniportCharacteristics = Pointer to a buffer with miniport characteristics
+ * CharacteristicsLength = Number of bytes in characteristics buffer
+ * RETURNS:
+ * Status of operation
+ */
+{
+ UINT MinSize;
+ NTSTATUS Status;
+ NDIS_STATUS NdisStatus;
+ UINT SelectedMediumIndex;
+ PLOGICAL_ADAPTER Adapter;
+ PMINIPORT_DRIVER Miniport = GET_MINIPORT_DRIVER(NdisWrapperHandle);
+
+ switch (MiniportCharacteristics->MajorNdisVersion) {
+ case 0x03:
+ MinSize = sizeof(NDIS30_MINIPORT_CHARACTERISTICS);
+ break;
+
+ case 0x04:
+ MinSize = sizeof(NDIS40_MINIPORT_CHARACTERISTICS);
+ break;
+
+ case 0x05:
+ MinSize = sizeof(NDIS50_MINIPORT_CHARACTERISTICS);
+ break;
+
+ default:
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Bad miniport characteristics version.\n"));
+ return NDIS_STATUS_BAD_VERSION;
+ }
+
+ if (CharacteristicsLength < MinSize) {
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Bad miniport characteristics.\n"));
+ return NDIS_STATUS_BAD_CHARACTERISTICS;
+ }
+
+ /* Check if mandatory MiniportXxx functions are specified */
+ if ((!MiniportCharacteristics->HaltHandler) ||
+ (!MiniportCharacteristics->InitializeHandler)||
+ (!MiniportCharacteristics->QueryInformationHandler) ||
+ (!MiniportCharacteristics->ResetHandler) ||
+ (!MiniportCharacteristics->SetInformationHandler)) {
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Bad miniport characteristics.\n"));
+ return NDIS_STATUS_BAD_CHARACTERISTICS;
+ }
+
+ if (MiniportCharacteristics->MajorNdisVersion == 0x03) {
+ if (!MiniportCharacteristics->SendHandler) {
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Bad miniport characteristics.\n"));
+ return NDIS_STATUS_BAD_CHARACTERISTICS;
+ }
+ } else if (MiniportCharacteristics->MajorNdisVersion >= 0x04) {
+ /* NDIS 4.0+ */
+ if ((!MiniportCharacteristics->SendHandler) &&
+ (!MiniportCharacteristics->SendPacketsHandler)) {
+ NDIS_DbgPrint(DEBUG_MINIPORT, ("Bad miniport characteristics.\n"));
+ return NDIS_STATUS_BAD_CHARACTERISTICS;
+ }
+ }
+
+ RtlCopyMemory(&Miniport->Chars, MiniportCharacteristics, MinSize);
+
+ Adapter = ExAllocatePool(NonPagedPool, sizeof(LOGICAL_ADAPTER));
+ if (!Adapter) {
+ NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ return NDIS_STATUS_RESOURCES;
+ }
+
+ RtlZeroMemory(Adapter, sizeof(LOGICAL_ADAPTER));
+ KeInitializeSpinLock(&Adapter->Lock);
+ Adapter->RefCount = 1;
+ Adapter->Miniport = Miniport;
+
+ /* Create the device object for this adapter */
+ /* FIXME: Use GUIDs */
+ RtlInitUnicodeString(&Adapter->DeviceName, L"\\Device\\ne2000");
+ Status = IoCreateDevice(Miniport->DriverObject, 0, &Adapter->DeviceName,
+ FILE_DEVICE_PHYSICAL_NETCARD, 0, FALSE, &Adapter->DeviceObject);
+ if (!NT_SUCCESS(Status)) {
+ NDIS_DbgPrint(MIN_TRACE, ("Could not create device object.\n"));
+ ExFreePool(Adapter);
+ return NDIS_STATUS_FAILURE;
+ }
+
+ /* Put adapter in adapter list for this miniport */
+ ExInterlockedInsertTailList(&Miniport->AdapterListHead,
+ &Adapter->MiniportListEntry,
+ &Miniport->Lock);
+
+ /* Put adapter in global adapter list */
+ ExInterlockedInsertTailList(&AdapterListHead,
+ &Adapter->ListEntry,
+ &AdapterListLock);
+
+ /* Call MiniportInitialize */
+ (*Miniport->Chars.InitializeHandler)(
+ &NdisStatus,
+ &SelectedMediumIndex,
+ &MediaArray[0],
+ MEDIA_ARRAY_SIZE,
+ Adapter,
+ NULL /* FIXME: WrapperConfigurationContext */);
+
+ return NDIS_STATUS_SUCCESS;
+}
+
+
+VOID
+EXPORT
+NdisMResetComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_STATUS Status,
+ IN BOOLEAN AddressingReset)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMSendComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PNDIS_PACKET Packet,
+ IN NDIS_STATUS Status)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMSendResourcesAvailable(
+ IN NDIS_HANDLE MiniportAdapterHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMSetAttributes(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_HANDLE MiniportAdapterContext,
+ IN BOOLEAN BusMaster,
+ IN NDIS_INTERFACE_TYPE AdapterType)
+/*
+ * FUNCTION: Informs the NDIS library of significant features of the caller's NIC
+ * ARGUMENTS:
+ * MiniportAdapterHandle = Handle input to MiniportInitialize
+ * MiniportAdapterContext = Pointer to context information
+ * BusMaster = Specifies TRUE if the caller's NIC is a busmaster DMA device
+ * AdapterType = Specifies the I/O bus interface of the caller's NIC
+ */
+{
+ PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(MiniportAdapterHandle);
+
+ Adapter->MiniportAdapterContext = MiniportAdapterHandle;
+ Adapter->Attributes = BusMaster? NDIS_ATTRIBUTE_BUS_MASTER : 0;
+ Adapter->AdapterType = AdapterType;
+ Adapter->AttributesSet = TRUE;
+}
+
+
+VOID
+EXPORT
+NdisMSetAttributesEx(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN NDIS_HANDLE MiniportAdapterContext,
+ IN UINT CheckForHangTimeInSeconds OPTIONAL,
+ IN ULONG AttributeFlags,
+ IN NDIS_INTERFACE_TYPE AdapterType)
+/*
+ * FUNCTION: Informs the NDIS library of significant features of the caller's NIC
+ * ARGUMENTS:
+ * MiniportAdapterHandle = Handle input to MiniportInitialize
+ * MiniportAdapterContext = Pointer to context information
+ * CheckForHangTimeInSeconds = Specifies interval in seconds at which
+ * MiniportCheckForHang should be called
+ * AttributeFlags = Bitmask that indicates specific attributes
+ * AdapterType = Specifies the I/O bus interface of the caller's NIC
+ */
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisMSleep(
+ IN ULONG MicrosecondsToSleep)
+{
+ UNIMPLEMENTED
+}
+
+
+BOOLEAN
+EXPORT
+NdisMSynchronizeWithInterrupt(
+ IN PNDIS_MINIPORT_INTERRUPT Interrupt,
+ IN PVOID SynchronizeFunction,
+ IN PVOID SynchronizeContext)
+{
+ UNIMPLEMENTED
+
+ return FALSE;
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisMWriteLogData(
+ IN NDIS_HANDLE LogHandle,
+ IN PVOID LogBuffer,
+ IN UINT LogBufferSize)
+{
+ UNIMPLEMENTED
+
+ return NDIS_STATUS_FAILURE;
+}
+
+
+VOID
+EXPORT
+NdisTerminateWrapper(
+ IN NDIS_HANDLE NdisWrapperHandle,
+ IN PVOID SystemSpecific)
+/*
+ * FUNCTION: Releases resources allocated by a call to NdisMInitializeWrapper
+ * ARGUMENTS:
+ * NdisWrapperHandle = Handle returned by NdisMInitializeWrapper
+ * SystemSpecific = Always NULL
+ */
+{
+ ExFreePool(NdisWrapperHandle);
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/protocol.c
+ * PURPOSE: Routines used by NDIS protocol drivers
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+#include <miniport.h>
+#include <protocol.h>
+
+LIST_ENTRY ProtocolListHead;
+KSPIN_LOCK ProtocolListLock;
+
+
+VOID ProtocolWorker(
+ PVOID Context)
+/*
+ * FUNCTION: Worker function for ProtocolXxx functions
+ * ARGUMENTS:
+ * Context = Pointer to context information (PROTOCOL_BINDING)
+ */
+{
+}
+
+
+VOID
+EXPORT
+NdisCloseAdapter(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisBindingHandle)
+/*
+ * FUNCTION: Closes an adapter opened with NdisOpenAdapter
+ * ARGUMENTS:
+ * Status = Address of buffer for status information
+ * NdisBindingHandle = Handle returned by NdisOpenAdapter
+ */
+{
+ PADAPTER_BINDING AdapterBinding = GET_ADAPTER_BINDING(NdisBindingHandle);
+
+ ExFreePool(AdapterBinding);
+
+ *Status = NDIS_STATUS_SUCCESS;
+}
+
+
+VOID
+EXPORT
+NdisDeregisterProtocol(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisProtocolHandle)
+/*
+ * FUNCTION: Releases the resources allocated by NdisRegisterProtocol
+ * ARGUMENTS:
+ * Status = Address of buffer for status information
+ * NdisProtocolHandle = Handle returned by NdisRegisterProtocol
+ */
+{
+ ExFreePool(NdisProtocolHandle);
+ *Status = NDIS_STATUS_SUCCESS;
+}
+
+
+VOID
+EXPORT
+NdisOpenAdapter(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_STATUS OpenErrorStatus,
+ OUT PNDIS_HANDLE NdisBindingHandle,
+ OUT PUINT SelectedMediumIndex,
+ IN PNDIS_MEDIUM MediumArray,
+ IN UINT MediumArraySize,
+ IN NDIS_HANDLE NdisProtocolHandle,
+ IN NDIS_HANDLE ProtocolBindingContext,
+ IN PNDIS_STRING AdapterName,
+ IN UINT OpenOptions,
+ IN PSTRING AddressingInformation OPTIONAL)
+/*
+ * FUNCTION: Opens an adapter for communication
+ * ARGUMENTS:
+ * Status = Address of buffer for status information
+ * OpenErrorStatus = Address of buffer for secondary error code
+ * NdisBindingHandle = Address of buffer for adapter binding handle
+ * SelectedMediumIndex = Address of buffer for selected medium
+ * MediumArray = Pointer to an array of NDIS_MEDIUMs called can support
+ * MediumArraySize = Number of elements in MediumArray
+ * NdisProtocolHandle = Handle returned by NdisRegisterProtocol
+ * ProtocolBindingContext = Pointer to caller suplied context area
+ * AdapterName = Pointer to buffer with name of adapter
+ * OpenOptions = Bitmask with flags passed to next-lower driver
+ * AddressingInformation = Optional pointer to buffer with NIC specific information
+ */
+{
+ PADAPTER_BINDING AdapterBinding;
+ PLOGICAL_ADAPTER Adapter;
+ NDIS_STATUS NdisStatus;
+ PNDIS_MEDIUM Medium1;
+ PNDIS_MEDIUM Medium2;
+ ULONG BytesWritten;
+ BOOLEAN Found;
+ UINT i, j;
+ PPROTOCOL_BINDING Protocol = GET_PROTOCOL_BINDING(ProtocolBindingContext);
+
+ Adapter = MiniLocateDevice(AdapterName);
+
+ if (!Adapter) {
+ NDIS_DbgPrint(MIN_TRACE, ("Adapter not found.\n"));
+ *Status = NDIS_STATUS_ADAPTER_NOT_FOUND;
+ return;
+ }
+
+ /* Query the miniport driver for it's supported medias and search the list
+ to find the first medium also supported by the protocol driver */
+
+ NdisStatus = MiniQueryInformation(Adapter, OID_GEN_MEDIA_SUPPORTED, 0, &BytesWritten);
+
+ /* FIXME: Handle this */
+ if (NdisStatus == NDIS_STATUS_PENDING) {
+ NDIS_DbgPrint(MIN_TRACE, ("NDIS_STATUS_PENDING returned!\n"));
+ }
+
+ if (!NT_SUCCESS(NdisStatus))
+ *Status = NdisStatus;
+
+ Medium1 = Adapter->QueryBuffer;
+ Medium2 = MediumArray;
+ Found = FALSE;
+ for (i = 0; i < BytesWritten / sizeof(NDIS_MEDIUM); i++) {
+ for (j = 0; j < MediumArraySize; j++) {
+ if (Medium2[j] == Medium1[i]) {
+ *SelectedMediumIndex = j;
+ Found = TRUE;
+ break;
+ }
+ }
+ if (Found)
+ break;
+ }
+
+ if (!Found) {
+ NDIS_DbgPrint(MIN_TRACE, ("Media is not supported.\n"));
+ *Status = NDIS_STATUS_UNSUPPORTED_MEDIA;
+ return;
+ }
+
+ AdapterBinding = ExAllocatePool(NonPagedPool, sizeof(ADAPTER_BINDING));
+
+ if (!AdapterBinding) {
+ NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ *Status = NDIS_STATUS_RESOURCES;
+ return;
+ }
+
+ RtlZeroMemory(AdapterBinding, sizeof(ADAPTER_BINDING));
+
+ /* Put on protocol binding adapter list */
+ ExInterlockedInsertTailList(&Protocol->AdapterListHead,
+ &AdapterBinding->ProtocolListEntry,
+ &Protocol->Lock);
+
+ *NdisBindingHandle = AdapterBinding;
+
+ *Status = NDIS_STATUS_SUCCESS;
+}
+
+
+VOID
+EXPORT
+NdisRegisterProtocol(
+ OUT PNDIS_STATUS Status,
+ OUT PNDIS_HANDLE NdisProtocolHandle,
+ IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,
+ IN UINT CharacteristicsLength)
+/*
+ * FUNCTION: Registers an NDIS driver's ProtocolXxx entry points
+ * ARGUMENTS:
+ * Status = Address of buffer for status information
+ * NdisProtocolHandle = Address of buffer for handle used to identify the driver
+ * ProtocolCharacteristics = Pointer to NDIS_PROTOCOL_CHARACTERISTICS structure
+ * CharacteristicsLength = Size of structure which ProtocolCharacteristics targets
+ */
+{
+ PPROTOCOL_BINDING Protocol;
+ NTSTATUS NtStatus;
+ UINT MinSize;
+
+ switch (ProtocolCharacteristics->MajorNdisVersion) {
+ case 0x03:
+ MinSize = sizeof(NDIS30_PROTOCOL_CHARACTERISTICS);
+ break;
+
+ case 0x04:
+ MinSize = sizeof(NDIS40_PROTOCOL_CHARACTERISTICS);
+ break;
+
+ case 0x05:
+ MinSize = sizeof(NDIS50_PROTOCOL_CHARACTERISTICS);
+ break;
+
+ default:
+ *Status = NDIS_STATUS_BAD_VERSION;
+ return;
+ }
+
+ if (CharacteristicsLength < MinSize) {
+ NDIS_DbgPrint(DEBUG_PROTOCOL, ("Bad protocol characteristics.\n"));
+ *Status = NDIS_STATUS_BAD_CHARACTERISTICS;
+ return;
+ }
+
+ Protocol = ExAllocatePool(NonPagedPool, sizeof(PROTOCOL_BINDING));
+ if (!Protocol) {
+ NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ *Status = NDIS_STATUS_RESOURCES;
+ return;
+ }
+
+ RtlZeroMemory(Protocol, sizeof(PROTOCOL_BINDING));
+ RtlCopyMemory(&Protocol->Chars, ProtocolCharacteristics, MinSize);
+
+ NtStatus = RtlUpcaseUnicodeString(
+ &Protocol->Chars.Name,
+ &ProtocolCharacteristics->Name,
+ TRUE);
+ if (!NT_SUCCESS(NtStatus)) {
+ NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
+ ExFreePool(Protocol);
+ *Status = NDIS_STATUS_RESOURCES;
+ return;
+ }
+
+ KeInitializeSpinLock(&Protocol->Lock);
+
+ Protocol->RefCount = 1;
+
+ ExInitializeWorkItem(&Protocol->WorkItem, ProtocolWorker, Protocol);
+
+ InitializeListHead(&Protocol->AdapterListHead);
+
+ *NdisProtocolHandle = Protocol;
+ *Status = NDIS_STATUS_SUCCESS;
+}
+
+
+VOID
+EXPORT
+NdisRequest(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN PNDIS_REQUEST NdisRequest)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisReset(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisBindingHandle)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisSend(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN PNDIS_PACKET Packet)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisSendPackets(
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN PPNDIS_PACKET PacketArray,
+ IN UINT NumberOfPackets)
+{
+ UNIMPLEMENTED
+}
+
+
+VOID
+EXPORT
+NdisTransferData(
+ OUT PNDIS_STATUS Status,
+ IN NDIS_HANDLE NdisBindingHandle,
+ IN NDIS_HANDLE MacReceiveContext,
+ IN UINT ByteOffset,
+ IN UINT BytesToTransfer,
+ IN OUT PNDIS_PACKET Packet,
+ OUT PUINT BytesTransferred)
+{
+ UNIMPLEMENTED
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/string.c
+ * PURPOSE: String management routines
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+NDIS_STATUS
+EXPORT
+NdisAnsiStringToUnicodeString(
+ IN OUT PNDIS_STRING DestinationString,
+ IN PNDIS_ANSI_STRING SourceString)
+/*
+ * FUNCTION: Converts an ANSI string to an NDIS (unicode) string
+ * ARGUMENTS:
+ * DestinationString = Address of buffer to place converted string in
+ * SourceString = Pointer to ANSI string to be converted
+ */
+{
+ return (NDIS_STATUS)RtlAnsiStringToUnicodeString(
+ (PUNICODE_STRING)DestinationString,
+ (PANSI_STRING)SourceString, FALSE);
+}
+
+
+BOOLEAN
+EXPORT
+NdisEqualString(
+ IN PNDIS_STRING String1,
+ IN PNDIS_STRING String2,
+ IN BOOLEAN CaseInsensitive)
+/*
+ * FUNCTION: Tests two strings for equality
+ * ARGUMENTS:
+ * String1 = Pointer to first string
+ * String2 = Pointer to second string
+ * CaseInsensitive = TRUE if the compare should be case insensitive
+ */
+{
+ return RtlEqualUnicodeString(
+ (PUNICODE_STRING)String1,
+ (PUNICODE_STRING)String2,
+ CaseInsensitive);
+}
+
+
+VOID
+EXPORT
+NdisInitAnsiString(
+ IN OUT PNDIS_ANSI_STRING DestinationString,
+ IN PCSTR SourceString)
+/*
+ * FUNCTION: Initializes an ANSI string
+ * ARGUMENTS:
+ * DestinationString = Address of buffer to place string in
+ * SourceString = Pointer to null terminated ANSI string
+ */
+{
+ RtlInitString(
+ (PANSI_STRING)DestinationString,
+ (PCSZ)SourceString);
+}
+
+
+VOID
+EXPORT
+NdisInitializeString(
+ IN OUT PNDIS_STRING DestinationString,
+ IN PUCHAR SourceString)
+/*
+ * FUNCTION: Initializes an NDIS (unicode) string
+ * ARGUMENTS:
+ * DestinationString = Address of buffer to place string in
+ * SourceString = Pointer to null terminated ANSI string
+ */
+{
+ ANSI_STRING AnsiString;
+
+ RtlInitAnsiString(
+ &AnsiString,
+ (PCSZ)SourceString);
+
+ RtlAnsiStringToUnicodeString(
+ (PUNICODE_STRING)DestinationString,
+ &AnsiString,
+ TRUE);
+}
+
+
+VOID
+EXPORT
+NdisInitUnicodeString(
+ IN OUT PNDIS_STRING DestinationString,
+ IN PCWSTR SourceString)
+/*
+ * FUNCTION: Initializes an unicode string
+ * ARGUMENTS:
+ * DestinationString = Address of buffer to place string in
+ * SourceString = Pointer to null terminated unicode string
+ */
+{
+ RtlInitUnicodeString(
+ (PUNICODE_STRING)DestinationString,
+ SourceString);
+}
+
+
+NDIS_STATUS
+EXPORT
+NdisUnicodeStringToAnsiString(
+ IN OUT PNDIS_ANSI_STRING DestinationString,
+ IN PNDIS_STRING SourceString)
+/*
+ * FUNCTION: Converts an NDIS (unicode) string to an ANSI string
+ * ARGUMENTS:
+ * DestinationString = Address of buffer to place converted string in
+ * SourceString = Pointer to unicode string to be converted
+ */
+{
+ return (NDIS_STATUS)RtlUnicodeStringToAnsiString(
+ (PANSI_STRING)DestinationString,
+ (PUNICODE_STRING)SourceString,
+ FALSE);
+}
+
+
+NTSTATUS
+EXPORT
+NdisUpcaseUnicodeString(
+ OUT PUNICODE_STRING DestinationString,
+ IN PUNICODE_STRING SourceString)
+/*
+ * FUNCTION:
+ * ARGUMENTS:
+ * NOTES:
+ * NDIS 5.0
+ */
+{
+ UNIMPLEMENTED
+
+ return STATUS_NOT_IMPLEMENTED;
+}
+
+/* EOF */
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS NDIS library
+ * FILE: ndis/time.c
+ * PURPOSE: Time related routines
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * REVISIONS:
+ * CSH 01/08-2000 Created
+ */
+#include <ndissys.h>
+
+
+VOID
+EXPORT
+NdisCancelTimer(
+ IN PNDIS_TIMER Timer,
+ OUT PBOOLEAN TimerCancelled)
+{
+}
+
+
+VOID
+EXPORT
+NdisGetCurrentSystemTime (
+ IN OUT PLONGLONG pSystemTime)
+{
+}
+
+
+VOID
+EXPORT
+NdisInitializeTimer(
+ IN OUT PNDIS_TIMER Timer,
+ IN PNDIS_TIMER_FUNCTION TimerFunction,
+ IN PVOID FunctionContext)
+{
+}
+
+
+VOID
+EXPORT
+NdisMCancelTimer(
+ IN PNDIS_MINIPORT_TIMER Timer,
+ OUT PBOOLEAN TimerCancelled)
+{
+}
+
+
+VOID
+EXPORT
+NdisMInitializeTimer(
+ IN OUT PNDIS_MINIPORT_TIMER Timer,
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PNDIS_TIMER_FUNCTION TimerFunction,
+ IN PVOID FunctionContext)
+{
+}
+
+
+VOID
+EXPORT
+NdisMSetPeriodicTimer(
+ IN PNDIS_MINIPORT_TIMER Timer,
+ IN UINT MillisecondsPeriod)
+{
+}
+
+
+VOID
+EXPORT
+NdisMSetTimer(
+ IN PNDIS_MINIPORT_TIMER Timer,
+ IN UINT MillisecondsToDelay)
+{
+}
+
+
+VOID
+EXPORT
+NdisSetTimer(
+ IN PNDIS_TIMER Timer,
+ IN UINT MillisecondsToDelay)
+{
+}
+
+/* EOF */
--- /dev/null
+Build instructions for NDIS library
+-----------------------------------
+
+Building with Visual C++ and Windows NT DDK:
+
+Variables:
+%BASEDIR% = path to NT4 DDK (e.g. c:\ntddk)
+%DDKBUILDENV% = DDK build environment (free or checked)
+
+DDK environment variables must be set! (run setenv.bat)
+
+ - Create the directory objects/i386/%DDKBUILDENV%
+ - Run "build" to build the library
+
+
+Building with Mingw32 and ReactOS include files:
+
+ - Run "make ndis" FROM THE ReactOS ROOT DIRECTORY to build the library