ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

miniport.h
Go to the documentation of this file.
00001 /*
00002  * COPYRIGHT:   See COPYING in the top level directory
00003  * PROJECT:     ReactOS NDIS library
00004  * FILE:        ndis/miniport.h
00005  * PURPOSE:     Definitions for routines used by NDIS miniport drivers
00006  */
00007 
00008 #pragma once
00009 
00010 #include <ndis.h>
00011 #include <ndissys.h>
00012 
00013 struct _ADAPTER_BINDING;
00014 
00015 typedef struct _HARDWARE_ADDRESS {
00016     union {
00017         UCHAR Medium802_3[ETH_LENGTH_OF_ADDRESS];
00018     } Type;
00019 } HARDWARE_ADDRESS, *PHARDWARE_ADDRESS;
00020 
00021 /* Information about a miniport */
00022 typedef struct _NDIS_M_DRIVER_BLOCK {
00023     LIST_ENTRY                      ListEntry;                /* Entry on global list */
00024     KSPIN_LOCK                      Lock;                     /* Protecting spin lock */
00025     NDIS_MINIPORT_CHARACTERISTICS   MiniportCharacteristics;  /* Miniport characteristics */
00026     WORK_QUEUE_ITEM                 WorkItem;                 /* Work item */
00027     PDRIVER_OBJECT                  DriverObject;             /* Driver object of miniport */
00028     LIST_ENTRY                      DeviceList;               /* Adapters created by miniport */
00029     PUNICODE_STRING                 RegistryPath;             /* SCM Registry key */
00030 #if !defined(_MSC_VER) && defined(_NDIS_)
00031 } NDIS_M_DRIVER_BLOCK_COMPATIBILITY_HACK_DONT_USE;
00032 #else
00033 } NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK;
00034 #endif
00035 
00036 /* There must be some defined struct to do this... */
00037 typedef struct _NDIS_M_DEVICE_BLOCK {
00038     PDEVICE_OBJECT DeviceObject;
00039     PNDIS_STRING   SymbolicName;
00040 } NDIS_M_DEVICE_BLOCK, *PNDIS_M_DEVICE_BLOCK;
00041 
00042 /* resources allocated on behalf on the miniport */
00043 #define MINIPORT_RESOURCE_TYPE_REGISTRY_DATA 0
00044 #define MINIPORT_RESOURCE_TYPE_MEMORY        1
00045 typedef struct _MINIPORT_RESOURCE {
00046     LIST_ENTRY     ListEntry;
00047     ULONG          ResourceType;
00048     PVOID          Resource;
00049 } MINIPORT_RESOURCE, *PMINIPORT_RESOURCE;
00050 
00051 /* Configuration context */
00052 typedef struct _MINIPORT_CONFIGURATION_CONTEXT {
00053     NDIS_HANDLE    Handle;
00054     LIST_ENTRY     ResourceListHead;
00055     KSPIN_LOCK     ResourceLock;
00056 } MINIPORT_CONFIGURATION_CONTEXT, *PMINIPORT_CONFIGURATION_CONTEXT;
00057 
00058 /* Bugcheck callback context */
00059 typedef struct _MINIPORT_BUGCHECK_CONTEXT {
00060     PVOID                       DriverContext;
00061     ADAPTER_SHUTDOWN_HANDLER    ShutdownHandler;
00062     PKBUGCHECK_CALLBACK_RECORD  CallbackRecord;
00063 } MINIPORT_BUGCHECK_CONTEXT, *PMINIPORT_BUGCHECK_CONTEXT;
00064 
00065 /* a miniport's shared memory */
00066 typedef struct _MINIPORT_SHARED_MEMORY {
00067     PDMA_ADAPTER          AdapterObject;
00068     ULONG                 Length;
00069     PHYSICAL_ADDRESS      PhysicalAddress;
00070     PVOID                 VirtualAddress;
00071     BOOLEAN               Cached;
00072     PNDIS_MINIPORT_BLOCK  Adapter;
00073     PVOID                 Context;
00074     PIO_WORKITEM          WorkItem;
00075 } MINIPORT_SHARED_MEMORY, *PMINIPORT_SHARED_MEMORY;
00076 
00077 /* A structure of WrapperConfigurationContext (not compatible with the
00078    Windows one). */
00079 typedef struct _NDIS_WRAPPER_CONTEXT {
00080     HANDLE            RegistryHandle;
00081     PDEVICE_OBJECT    DeviceObject;
00082     ULONG             BusNumber;
00083     ULONG             SlotNumber;
00084 } NDIS_WRAPPER_CONTEXT, *PNDIS_WRAPPER_CONTEXT;
00085 
00086 #define GET_MINIPORT_DRIVER(Handle)((PNDIS_M_DRIVER_BLOCK)Handle)
00087 
00088 /* Information about a logical adapter */
00089 typedef struct _LOGICAL_ADAPTER
00090 {
00091     NDIS_MINIPORT_BLOCK         NdisMiniportBlock;      /* NDIS defined fields */
00092     PNDIS_MINIPORT_WORK_ITEM    WorkQueueHead;          /* Head of work queue */
00093     PNDIS_MINIPORT_WORK_ITEM    WorkQueueTail;          /* Tail of work queue */
00094     LIST_ENTRY                  ListEntry;              /* Entry on global list */
00095     LIST_ENTRY                  MiniportListEntry;      /* Entry on miniport driver list */
00096     LIST_ENTRY                  ProtocolListHead;       /* List of bound protocols */
00097     ULONG                       MediumHeaderSize;       /* Size of medium header */
00098     HARDWARE_ADDRESS            Address;                /* Hardware address of adapter */
00099     ULONG                       AddressLength;          /* Length of hardware address */
00100     PMINIPORT_BUGCHECK_CONTEXT  BugcheckContext;        /* Adapter's shutdown handler */
00101 } LOGICAL_ADAPTER, *PLOGICAL_ADAPTER;
00102 
00103 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
00104 
00105 extern LIST_ENTRY MiniportListHead;
00106 extern KSPIN_LOCK MiniportListLock;
00107 extern LIST_ENTRY AdapterListHead;
00108 extern KSPIN_LOCK AdapterListLock;
00109 
00110 
00111 #if DBG
00112 VOID
00113 MiniDisplayPacket(
00114     PNDIS_PACKET Packet);
00115 #endif /* DBG */
00116 
00117 VOID
00118 MiniIndicateData(
00119     PLOGICAL_ADAPTER    Adapter,
00120     NDIS_HANDLE         MacReceiveContext,
00121     PVOID               HeaderBuffer,
00122     UINT                HeaderBufferSize,
00123     PVOID               LookaheadBuffer,
00124     UINT                LookaheadBufferSize,
00125     UINT                PacketSize);
00126 
00127 BOOLEAN
00128 MiniAdapterHasAddress(
00129     PLOGICAL_ADAPTER Adapter,
00130     PNDIS_PACKET Packet);
00131 
00132 PLOGICAL_ADAPTER
00133 MiniLocateDevice(
00134     PNDIS_STRING AdapterName);
00135 
00136 NDIS_STATUS
00137 MiniQueryInformation(
00138     PLOGICAL_ADAPTER    Adapter,
00139     NDIS_OID            Oid,
00140     ULONG               Size,
00141     PVOID               Buffer,
00142     PULONG              BytesWritten);
00143 
00144 VOID
00145 FASTCALL
00146 MiniQueueWorkItem(
00147     PLOGICAL_ADAPTER    Adapter,
00148     NDIS_WORK_ITEM_TYPE WorkItemType,
00149     PVOID               WorkItemContext,
00150     BOOLEAN             Top);
00151 
00152 NDIS_STATUS
00153 FASTCALL
00154 MiniDequeueWorkItem(
00155     PLOGICAL_ADAPTER    Adapter,
00156     NDIS_WORK_ITEM_TYPE *WorkItemType,
00157     PVOID               *WorkItemContext);
00158 
00159 NDIS_STATUS
00160 MiniDoRequest(
00161     PLOGICAL_ADAPTER Adapter,
00162     PNDIS_REQUEST NdisRequest);
00163 
00164 BOOLEAN
00165 NdisFindDevice(
00166     UINT   VendorID,
00167     UINT   DeviceID,
00168     PUINT  BusNumber,
00169     PUINT  SlotNumber);
00170 
00171 VOID
00172 NdisStartDevices(VOID);
00173 
00174 VOID
00175 NTAPI
00176 MiniportWorker(
00177     IN PDEVICE_OBJECT DeviceObject,
00178     IN PVOID WorkItem);
00179 
00180 VOID NTAPI
00181 MiniSendComplete(
00182     IN  NDIS_HANDLE     MiniportAdapterHandle,
00183     IN  PNDIS_PACKET    Packet,
00184     IN  NDIS_STATUS     Status);
00185 
00186 BOOLEAN
00187 MiniIsBusy(
00188     PLOGICAL_ADAPTER Adapter,
00189     NDIS_WORK_ITEM_TYPE Type);
00190 
00191 NDIS_STATUS
00192 MiniReset(
00193     PLOGICAL_ADAPTER Adapter);
00194 
00195 VOID
00196 MiniDoAddressingReset(
00197     PLOGICAL_ADAPTER Adapter);
00198 
00199 /* EOF */

Generated on Sat May 26 2012 04:26:38 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.