* PURPOSE: Definitions for routines used by NDIS miniport drivers
*/
-#ifndef __MINIPORT_H
-#define __MINIPORT_H
+#pragma once
#include <ndis.h>
#include <ndissys.h>
PDRIVER_OBJECT DriverObject; /* Driver object of miniport */
LIST_ENTRY DeviceList; /* Adapters created by miniport */
PUNICODE_STRING RegistryPath; /* SCM Registry key */
+#if !defined(_MSC_VER) && defined(_NDIS_)
+} NDIS_M_DRIVER_BLOCK_COMPATIBILITY_HACK_DONT_USE;
+#else
} NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK;
+#endif
+
+/* There must be some defined struct to do this... */
+typedef struct _NDIS_M_DEVICE_BLOCK {
+ PDEVICE_OBJECT DeviceObject;
+ PNDIS_STRING SymbolicName;
+} NDIS_M_DEVICE_BLOCK, *PNDIS_M_DEVICE_BLOCK;
/* resources allocated on behalf on the miniport */
-#define MINIPORT_RESOURCE_TYPE_MEMORY 0
+#define MINIPORT_RESOURCE_TYPE_REGISTRY_DATA 0
+#define MINIPORT_RESOURCE_TYPE_MEMORY 1
typedef struct _MINIPORT_RESOURCE {
LIST_ENTRY ListEntry;
ULONG ResourceType;
/* a miniport's shared memory */
typedef struct _MINIPORT_SHARED_MEMORY {
- PDMA_ADAPTER AdapterObject;
- ULONG Length;
- PHYSICAL_ADDRESS PhysicalAddress;
- PVOID VirtualAddress;
- BOOLEAN Cached;
+ PDMA_ADAPTER AdapterObject;
+ ULONG Length;
+ PHYSICAL_ADDRESS PhysicalAddress;
+ PVOID VirtualAddress;
+ BOOLEAN Cached;
+ PNDIS_MINIPORT_BLOCK Adapter;
+ PVOID Context;
+ PKEVENT Event;
} MINIPORT_SHARED_MEMORY, *PMINIPORT_SHARED_MEMORY;
/* A structure of WrapperConfigurationContext (not compatible with the
HANDLE RegistryHandle;
PDEVICE_OBJECT DeviceObject;
ULONG BusNumber;
+ ULONG SlotNumber;
} NDIS_WRAPPER_CONTEXT, *PNDIS_WRAPPER_CONTEXT;
#define GET_MINIPORT_DRIVER(Handle)((PNDIS_M_DRIVER_BLOCK)Handle)
typedef struct _LOGICAL_ADAPTER
{
NDIS_MINIPORT_BLOCK NdisMiniportBlock; /* NDIS defined fields */
- BOOLEAN MiniportBusy; /* A MiniportXxx routine is executing */
PNDIS_MINIPORT_WORK_ITEM WorkQueueHead; /* Head of work queue */
PNDIS_MINIPORT_WORK_ITEM WorkQueueTail; /* Tail of work queue */
LIST_ENTRY ListEntry; /* Entry on global list */
ULONG MediumHeaderSize; /* Size of medium header */
HARDWARE_ADDRESS Address; /* Hardware address of adapter */
ULONG AddressLength; /* Length of hardware address */
- PUCHAR LookaheadBuffer; /* Pointer to lookahead buffer */
- ULONG LookaheadLength; /* Length of lookahead buffer */
PMINIPORT_BUGCHECK_CONTEXT BugcheckContext; /* Adapter's shutdown handler */
} LOGICAL_ADAPTER, *PLOGICAL_ADAPTER;
extern KSPIN_LOCK AdapterListLock;
-#ifdef DBG
+#if DBG
VOID
MiniDisplayPacket(
PNDIS_PACKET Packet);
PVOID Buffer,
PULONG BytesWritten);
-NDIS_STATUS
+VOID
FASTCALL
MiniQueueWorkItem(
PLOGICAL_ADAPTER Adapter,
NDIS_WORK_ITEM_TYPE WorkItemType,
- PVOID WorkItemContext);
+ PVOID WorkItemContext,
+ BOOLEAN Top);
NDIS_STATUS
FASTCALL
NDIS_STATUS
MiniDoRequest(
- PNDIS_MINIPORT_BLOCK Adapter,
+ PLOGICAL_ADAPTER Adapter,
PNDIS_REQUEST NdisRequest);
BOOLEAN
VOID
NdisStartDevices();
-#endif /* __MINIPORT_H */
+VOID
+NTAPI
+MiniportWorker(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PVOID WorkItem);
-/* EOF */
+VOID NTAPI
+MiniSendComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PNDIS_PACKET Packet,
+ IN NDIS_STATUS Status);
+
+BOOLEAN
+MiniIsBusy(
+ PLOGICAL_ADAPTER Adapter,
+ NDIS_WORK_ITEM_TYPE Type);
+
+NDIS_STATUS
+MiniReset(
+ PLOGICAL_ADAPTER Adapter);
+VOID
+MiniDoAddressingReset(
+ PLOGICAL_ADAPTER Adapter);
+
+/* EOF */