Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenminiport.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
1.7.6.1
|