1511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 2511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Copyright (c) 1993,1994 3511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Texas A&M University. All rights reserved. 4511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 5511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Redistribution and use in source and binary forms, with or without 6511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * modification, are permitted provided that the following conditions 7511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * are met: 8511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 1. Redistributions of source code must retain the above copyright 9511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * notice, this list of conditions and the following disclaimer. 10511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 2. Redistributions in binary form must reproduce the above copyright 11511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * notice, this list of conditions and the following disclaimer in the 12511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * documentation and/or other materials provided with the distribution. 13511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 3. All advertising materials mentioning features or use of this software 14511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * must display the following acknowledgement: 15511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * This product includes software developed by Texas A&M University 16511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * and its contributors. 17511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 4. Neither the name of the University nor the names of its contributors 18511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * may be used to endorse or promote products derived from this software 19511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * without specific prior written permission. 20511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 21511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND 22511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE 25511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * SUCH DAMAGE. 32511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 33511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Developers: 34511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * David K. Hess, Douglas Lee Schales, David R. Safford 35511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 36511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Heavily modified for Metaware HighC + GNU C 2.8+ 37511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Gisle Vanem 1998 38511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 39511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 40511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifndef __PCAP_NDIS_H 41511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define __PCAP_NDIS_H 42511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 43511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#if defined (__HIGHC__) 44511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define pascal _CC(_CALLEE_POPS_STACK & ~_REVERSE_PARMS) /* calling convention */ 45511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define CALLBACK(foo) pascal WORD foo 46511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define PAS_PTR(x,arg) typedef FAR WORD pascal (*x) arg 47511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define GUARD() _inline (0x9C,0xFA) /* pushfd, cli */ 48511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define UNGUARD() _inline (0x9D) /* popfd */ 49511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define FAR _far 50511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 51511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#elif defined(__GNUC__) 52511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define CALLBACK(foo) WORD foo __attribute__((stdcall)) 53511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define PAS_PTR(x,arg) typedef WORD (*x) arg __attribute__((stdcall)) 54511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define GUARD() __asm__ __volatile__ ("pushfd; cli") 55511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define UNGUARD() __asm__ __volatile__ ("popfd") 56511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define FAR 57511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 58511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#elif defined (__TURBOC__) 59511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define CALLBACK(foo) WORD pascal foo 60511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define PAS_PTR(x,arg) typedef WORD pascal (_far *x) arg 61511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define GUARD() _asm { pushf; cli } 62511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define UNGUARD() _asm { popf } 63511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define FAR _far 64511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 65511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#elif defined (__WATCOMC__) 66511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define CALLBACK(foo) WORD pascal foo 67511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define PAS_PTR(x,arg) typedef WORD pascal (_far *x) arg 68511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define GUARD() _disable() 69511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define UNGUARD() _enable() 70511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define FAR _far 71511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 72511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else 73511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #error Unsupported compiler 74511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif 75511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 76511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 77511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 78511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Forwards 79511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 80511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct _ReqBlock; 81511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct _TxBufDescr; 82511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct _TDBufDescr; 83511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 84511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 85511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Protocol Manager API 86511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 87511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (ProtMan, (struct _ReqBlock FAR*, WORD)); 88511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 89511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 90511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * System request 91511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 92511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (SystemRequest, (DWORD, DWORD, WORD, WORD, WORD)); 93511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 94511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 95511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * MAC API 96511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 97511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (TransmitChain, (WORD, WORD, struct _TxBufDescr FAR*, WORD)); 98511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (TransferData, (WORD*,WORD, struct _TDBufDescr FAR*, WORD)); 99511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (Request, (WORD, WORD, WORD, DWORD, WORD, WORD)); 100511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (ReceiveRelease,(WORD, WORD)); 101511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (IndicationOn, (WORD)); 102511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (IndicationOff, (WORD)); 103511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 104511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 105511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 106511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HARDWARE_NOT_INSTALLED = 0, 107511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HARDWARE_FAILED_DIAG = 1, 108511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HARDWARE_FAILED_CONFIG = 2, 109511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HARDWARE_HARD_FAULT = 3, 110511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HARDWARE_SOFT_FAULT = 4, 111511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HARDWARE_OK = 7, 112511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HARDWARE_MASK = 0x0007, 113511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall MAC_BOUND = 0x0008, 114511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall MAC_OPEN = 0x0010, 115511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DIAG_IN_PROGRESS = 0x0020 116511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisMacStatus; 117511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 118511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 119511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall STATUS_RING_STATUS = 1, 120511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall STATUS_ADAPTER_CHECK = 2, 121511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall STATUS_START_RESET = 3, 122511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall STATUS_INTERRUPT = 4, 123511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall STATUS_END_RESET = 5 124511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisStatus; 125511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 126511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 127511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall FILTER_DIRECTED = 1, 128511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall FILTER_BROADCAST = 2, 129511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall FILTER_PROMISCUOUS = 4, 130511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall FILTER_SOURCE_ROUTE = 8 131511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisPacketFilter; 132511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 133511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 134511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_INITIATE_DIAGNOSTICS = 1, 135511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_READ_ERROR_LOG = 2, 136511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_SET_STATION_ADDRESS = 3, 137511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_OPEN_ADAPTER = 4, 138511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_CLOSE_ADAPTER = 5, 139511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_RESET_MAC = 6, 140511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_SET_PACKET_FILTER = 7, 141511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_ADD_MULTICAST_ADDRESS = 8, 142511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_DELETE_MULTICAST_ADDRESS = 9, 143511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_UPDATE_STATISTICS = 10, 144511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_CLEAR_STATISTICS = 11, 145511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_INTERRUPT_REQUEST = 12, 146511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_SET_FUNCTIONAL_ADDRESS = 13, 147511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_SET_LOOKAHEAD = 14 148511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisGeneralRequest; 149511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 150511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 151511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_BROADCAST = 0x00000001L, 152511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_MULTICAST = 0x00000002L, 153511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_FUNCTIONAL = 0x00000004L, 154511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_PROMISCUOUS = 0x00000008L, 155511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_SOFT_ADDRESS = 0x00000010L, 156511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_STATS_CURRENT = 0x00000020L, 157511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_INITIATE_DIAGS = 0x00000040L, 158511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_LOOPBACK = 0x00000080L, 159511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_RECEIVE_CHAIN = 0x00000100L, 160511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_SOURCE_ROUTING = 0x00000200L, 161511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_RESET_MAC = 0x00000400L, 162511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_OPEN_CLOSE = 0x00000800L, 163511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_INTERRUPT_REQUEST = 0x00001000L, 164511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_SOURCE_ROUTING_BRIDGE = 0x00002000L, 165511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SF_VIRTUAL_ADDRESSES = 0x00004000L 166511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisMacServiceFlags; 167511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 168511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 169511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_INITIATE_BIND = 1, 170511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_BIND = 2, 171511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_INITIATE_PREBIND = 3, 172511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_INITIATE_UNBIND = 4, 173511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall REQ_UNBIND = 5 174511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisSysRequest; 175511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 176511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 177511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_GET_PROTOCOL_MANAGER_INFO = 1, 178511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_REGISTER_MODULE = 2, 179511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_BIND_AND_START = 3, 180511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_GET_PROTOCOL_MANAGER_LINKAGE = 4, 181511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_GET_PROTOCOL_INI_PATH = 5, 182511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_REGISTER_PROTOCOL_MANAGER_INFO = 6, 183511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_INIT_AND_REGISTER = 7, 184511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_UNBIND_AND_STOP = 8, 185511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_BIND_STATUS = 9, 186511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall PM_REGISTER_STATUS = 10 187511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisProtManager; 188511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 189511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 190511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum { 191511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_SUCCESS = 0x00, 192511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_WAIT_FOR_RELEASE = 0x01, 193511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_REQUEST_QUEUED = 0x02, 194511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_FRAME_NOT_RECOGNIZED = 0x03, 195511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_FRAME_REJECTED = 0x04, 196511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_FORWARD_FRAME = 0x05, 197511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_OUT_OF_RESOURCE = 0x06, 198511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INVALID_PARAMETER = 0x07, 199511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INVALID_FUNCTION = 0x08, 200511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_NOT_SUPPORTED = 0x09, 201511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_HARDWARE_ERROR = 0x0A, 202511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_TRANSMIT_ERROR = 0x0B, 203511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_NO_SUCH_DESTINATION = 0x0C, 204511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_BUFFER_TOO_SMALL = 0x0D, 205511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_ALREADY_STARTED = 0x20, 206511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INCOMPLETE_BINDING = 0x21, 207511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_DRIVER_NOT_INITIALIZED = 0x22, 208511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_HARDWARE_NOT_FOUND = 0x23, 209511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_HARDWARE_FAILURE = 0x24, 210511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_CONFIGURATION_FAILURE = 0x25, 211511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INTERRUPT_CONFLICT = 0x26, 212511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INCOMPATIBLE_MAC = 0x27, 213511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INITIALIZATION_FAILED = 0x28, 214511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_NO_BINDING = 0x29, 215511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_NETWORK_MAY_NOT_BE_CONNECTED = 0x2A, 216511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INCOMPATIBLE_OS_VERSION = 0x2B, 217511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_ALREADY_REGISTERED = 0x2C, 218511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_PATH_NOT_FOUND = 0x2D, 219511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INSUFFICIENT_MEMORY = 0x2E, 220511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_INFO_NOT_FOUND = 0x2F, 221511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ERR_GENERAL_FAILURE = 0xFF 222511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } NdisError; 223511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 224511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PARAM_INTEGER 0 225511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PARAM_STRING 1 226511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 227511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_TX_BUF_LENGTH 8 228511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_TD_BUF_LENGTH 1 229511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_RX_BUF_LENGTH 8 230511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 231511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PTR_PHYSICAL 0 232511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PTR_VIRTUAL 2 233511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 234511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PATH "PROTMAN$" 235511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 236511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 237511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _CommonChars { 238511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD tableSize; 239511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE majorNdisVersion; /* 2 - Latest version */ 240511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE minorNdisVersion; /* 0 */ 241511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD reserved1; 242511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE majorModuleVersion; 243511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE minorModuleVersion; 244511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD moduleFlags; 245511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall /* 0 - Binding at upper boundary supported 246511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 1 - Binding at lower boundary supported 247511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 2 - Dynamically bound. 248511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 3-31 - Reserved, must be zero. 249511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 250511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE moduleName[16]; 251511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE protocolLevelUpper; 252511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall /* 1 - MAC 253511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 2 - Data Link 254511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 3 - Network 255511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 4 - Transport 256511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 5 - Session 257511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * -1 - Not specified 258511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 259511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE interfaceUpper; 260511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE protocolLevelLower; 261511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall /* 0 - Physical 262511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 1 - MAC 263511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 2 - Data Link 264511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 3 - Network 265511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 4 - Transport 266511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 5 - Session 267511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * -1 - Not specified 268511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 269511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE interfaceLower; 270511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD moduleId; 271511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD moduleDS; 272511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall SystemRequest systemRequest; 273511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *serviceChars; 274511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *serviceStatus; 275511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *upperDispatchTable; 276511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *lowerDispatchTable; 277511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *reserved2; /* Must be NULL */ 278511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *reserved3; /* Must be NULL */ 279511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } CommonChars; 280511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 281511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 282511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MulticastList { 283511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD maxMulticastAddresses; 284511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD numberMulticastAddresses; 285511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE multicastAddress[16][16]; 286511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } MulticastList; 287511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 288511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 289511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MacChars { 290511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD tableSize; 291511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE macName[16]; 292511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD addressLength; 293511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE permanentAddress[16]; 294511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE currentAddress[16]; 295511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD currentFunctionalAddress; 296511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall MulticastList *multicastList; 297511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD linkSpeed; 298511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD serviceFlags; 299511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD maxFrameSize; 300511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD txBufferSize; 301511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD txBufferAllocSize; 302511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD rxBufferSize; 303511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD rxBufferAllocSize; 304511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE ieeeVendor[3]; 305511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE vendorAdapter; 306511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *vendorAdapterDescription; 307511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD interruptLevel; 308511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD txQueueDepth; 309511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD maxDataBlocks; 310511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } MacChars; 311511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 312511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 313511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _ProtocolChars { 314511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD length; 315511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE name[16]; 316511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD type; 317511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } ProtocolChars; 318511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 319511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 320511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MacUpperDispatch { 321511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall CommonChars *backPointer; 322511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall Request request; 323511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall TransmitChain transmitChain; 324511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall TransferData transferData; 325511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ReceiveRelease receiveRelease; 326511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall IndicationOn indicationOn; 327511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall IndicationOff indicationOff; 328511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } MacUpperDispatch; 329511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 330511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 331511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MacStatusTable { 332511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD tableSize; 333511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD lastDiag; 334511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD macStatus; 335511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD packetFilter; 336511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *mediaSpecificStats; 337511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD lastClear; 338511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalFramesRx; 339511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalFramesCrc; 340511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalBytesRx; 341511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalDiscardBufSpaceRx; 342511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalMulticastRx; 343511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalBroadcastRx; 344511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD obsolete1[5]; 345511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalDiscardHwErrorRx; 346511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalFramesTx; 347511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalBytesTx; 348511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalMulticastTx; 349511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalBroadcastTx; 350511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD obsolete2[2]; 351511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalDiscardTimeoutTx; 352511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD totalDiscardHwErrorTx; 353511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } MacStatusTable; 354511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 355511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 356511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _ProtDispatch { 357511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall CommonChars *backPointer; 358511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD flags; 359511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall /* 0 - handles non-LLC frames 360511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 1 - handles specific-LSAP LLC frames 361511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 2 - handles specific-LSAP LLC frames 362511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 3-31 - reserved must be 0 363511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 364511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall void (*requestConfirm) (void); 365511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall void (*transmitConfirm) (void); 366511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall void (*receiveLookahead) (void); 367511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall void (*indicationComplete) (void); 368511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall void (*receiveChain) (void); 369511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall void (*status) (void); 370511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } ProtDispatch; 371511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 372511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 373511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _ReqBlock { 374511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD opcode; 375511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD status; 376511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE FAR *pointer1; 377511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE FAR *pointer2; 378511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD word1; 379511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } ReqBlock; 380511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 381511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 382511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TxBufDescrRec { 383511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE txPtrType; 384511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE dummy; 385511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD txDataLen; 386511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *txDataPtr; 387511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } TxBufDescrRec; 388511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 389511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 390511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TxBufDescr { 391511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD txImmedLen; 392511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *txImmedPtr; 393511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD txDataCount; 394511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall TxBufDescrRec txBufDescrRec[NDIS_TX_BUF_LENGTH]; 395511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } TxBufDescr; 396511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 397511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 398511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TDBufDescrRec { 399511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE tDPtrType; 400511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE dummy; 401511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD tDDataLen; 402511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *tDDataPtr; 403511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } TDBufDescrRec; 404511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 405511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 406511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TDBufDescr { 407511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD tDDataCount; 408511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall TDBufDescrRec tDBufDescrRec[NDIS_TD_BUF_LENGTH]; 409511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } TDBufDescr; 410511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 411511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 412511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _RxBufDescrRec { 413511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD rxDataLen; 414511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *rxDataPtr; 415511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } RxBufDescrRec; 416511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 417511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 418511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _RxBufDescr { 419511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD rxDataCount; 420511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RxBufDescrRec rxBufDescrRec[NDIS_RX_BUF_LENGTH]; 421511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } RxBufDescr; 422511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 423511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 424511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _PktBuf { 425511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall struct _PktBuf *nextLink; 426511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall struct _PktBuf *prevLink; 427511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall int handle; 428511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall int length; 429511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall int packetLength; 430511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall DWORD sequence; 431511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE *buffer; 432511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } PktBuf; 433511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 434511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 435511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _CardHandle { 436511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE moduleName[16]; 437511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall CommonChars *common; 438511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } CardHandle; 439511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 440511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 441511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _BindingsList { 442511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD numBindings; 443511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE moduleName[2][16]; 444511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } BindingsList; 445511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 446511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 447511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _FailingModules { 448511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE upperModuleName[16]; 449511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE lowerModuleName[16]; 450511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } FailingModules; 451511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 452511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 453511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef union _HardwareAddress { 454511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE bytes[6]; 455511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD words[3]; 456511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall struct { 457511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE bytes[6]; 458511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } addr; 459511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } HardwareAddress; 460511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 461511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 462511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _FddiHeader { 463511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE frameControl; 464511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HardwareAddress etherDestHost; 465511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HardwareAddress etherSrcHost; 466511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } FddiHeader; 467511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 468511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 469511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _EthernetIIHeader { 470511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HardwareAddress etherDestHost; 471511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HardwareAddress etherSrcHost; 472511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall WORD etherType; 473511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } EthernetIIHeader; 474511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 475511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 476511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _Ieee802Dot5Header { 477511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HardwareAddress etherDestHost; 478511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall HardwareAddress etherSrcHost; 479511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE routeInfo[30]; 480511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } Ieee802Dot5Header; 481511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 482511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 483511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _Ieee802Dot2SnapHeader { 484511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE dsap; /* 0xAA */ 485511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE ssap; /* 0xAA */ 486511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE control; /* 3 */ 487511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall BYTE protocolId[5]; 488511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } Ieee802Dot2SnapHeader; 489511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 490511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 491511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 492511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Prototypes 493511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 494511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern char *NdisLastError (void); 495511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int NdisOpen (void); 496511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int NdisInit (int promis); 497511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int NdisRegisterAndBind (int promis); 498511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern void NdisShutdown (void); 499511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern void NdisCheckMacFeatures (struct _CardHandle *card); 500511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int NdisSendPacket (struct _PktBuf *pktBuf, int macId); 501511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 502511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 503511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Assembly "glue" functions 504511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 505511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int systemRequestGlue(); 506511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int requestConfirmGlue(); 507511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int transmitConfirmGlue(); 508511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int receiveLookaheadGlue(); 509511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int indicationCompleteGlue(); 510511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int receiveChainGlue(); 511511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int statusGlue(); 512511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 513511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 514511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IOCTL function 515511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 516511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __SMALL__ 517511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int _far NdisGetLinkage (int handle, char *data, int size); 518511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else 519511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int NdisGetLinkage (int handle, char *data, int size); 520511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif 521511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 522511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 523511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * NDIS callback handlers 524511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 525511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisSystemRequest (DWORD,DWORD, WORD, WORD, WORD)); 526511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisRequestConfirm ( WORD, WORD, WORD, WORD, WORD,WORD)); 527511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisTransmitConfirm ( WORD, WORD, WORD, WORD, WORD)); 528511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisReceiveLookahead ( WORD, WORD, WORD, BYTE*, BYTE*, WORD)); 529511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisReceiveChain ( WORD, WORD, WORD, struct _RxBufDescr*, BYTE*, WORD)); 530511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisStatusProc ( WORD, WORD, BYTE*, WORD,WORD)); 531511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisIndicationComplete( WORD, WORD)); 532511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 533511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallBYTE *NdisAllocStack (void); 534511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallvoid NdisFreeStack (BYTE*); 535511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 536511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __HIGHC__ 537511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define RENAME_ASM_SYM(x) pragma Alias(x,"@" #x "") /* prepend `@' */ 538511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall #define RENAME_C_SYM(x) pragma Alias(x,"_" #x "") /* prepend `_' */ 539511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 540511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (systemRequestGlue); 541511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (requestConfirmGlue); 542511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (transmitConfirmGlue); 543511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (receiveLookaheadGlue); 544511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (indicationCompleteGlue); 545511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (receiveChainGlue); 546511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (statusGlue); 547511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_ASM_SYM (NdisGetLinkage); 548511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisSystemRequest); 549511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisRequestConfirm); 550511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisTransmitConfirm); 551511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisReceiveLookahead); 552511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisIndicationComplete); 553511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisReceiveChain); 554511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisStatusProc); 555511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisAllocStack); 556511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall RENAME_C_SYM (NdisFreeStack); 557511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif 558511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 559511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif 560