Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

436 lines
16 KiB

  1. /*++
  2. Copyright (c) 1994-1999 Digital Equipment Corporation
  3. Module Name:
  4. ntddpcm.h
  5. Abstract:
  6. This is the include file that defines all constants and types for
  7. accessing the PCMCIA Adapters.
  8. // @@BEGIN_DDKSPLIT
  9. Author:
  10. Jeff McLeman
  11. Revision History:
  12. Ravisankar Pudipeddi (ravisp) 1-Jan-1997
  13. // @@END_DDKSPLIT
  14. --*/
  15. #ifndef _NTDDPCMH_
  16. #define _NTDDPCMH_
  17. #if _MSC_VER > 1000
  18. #pragma once
  19. #endif
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. //
  24. // Device Name - this string is the name of the device. It is the name
  25. // that should be passed to NtOpenFile when accessing the device.
  26. //
  27. // Note: For devices that support multiple units, it should be suffixed
  28. // with the Ascii representation of the unit number.
  29. //
  30. #define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER
  31. #define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia"
  32. //
  33. // IoControlCode values for this device.
  34. //
  35. // Warning: Remember that the low two bits of the code specify how the
  36. // buffers are passed to the driver!
  37. //
  38. #define IOCTL_GET_TUPLE_DATA CTL_CODE(IOCTL_PCMCIA_BASE, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS)
  39. #define IOCTL_SOCKET_INFORMATION CTL_CODE(IOCTL_PCMCIA_BASE, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS)
  40. //
  41. // Tuple request parameters.
  42. //
  43. typedef struct _TUPLE_REQUEST {
  44. USHORT Socket;
  45. } TUPLE_REQUEST, *PTUPLE_REQUEST;
  46. #define MANUFACTURER_NAME_LENGTH 64
  47. #define DEVICE_IDENTIFIER_LENGTH 64
  48. #define DRIVER_NAME_LENGTH 32
  49. #define PcmciaInvalidControllerType 0xffffffff
  50. //
  51. // Controller classes returned in socket information structure.
  52. //
  53. typedef enum _PCMCIA_CONTROLLER_CLASS {
  54. PcmciaInvalidControllerClass = -1,
  55. PcmciaIntelCompatible,
  56. PcmciaCardBusCompatible,
  57. PcmciaElcController,
  58. PcmciaDatabook,
  59. PcmciaPciPcmciaBridge,
  60. PcmciaCirrusLogic,
  61. PcmciaTI,
  62. PcmciaTopic,
  63. PcmciaRicoh,
  64. PcmciaDatabookCB,
  65. PcmciaOpti,
  66. PcmciaTrid,
  67. PcmciaO2Micro,
  68. PcmciaNEC,
  69. PcmciaNEC_98
  70. } PCMCIA_CONTROLLER_CLASS, *PPCMCIA_CONTROLLER_CLASS;
  71. typedef struct _PCMCIA_SOCKET_INFORMATION {
  72. USHORT Socket;
  73. USHORT TupleCrc;
  74. UCHAR Manufacturer[MANUFACTURER_NAME_LENGTH];
  75. UCHAR Identifier[DEVICE_IDENTIFIER_LENGTH];
  76. UCHAR DriverName[DRIVER_NAME_LENGTH];
  77. UCHAR DeviceFunctionId;
  78. UCHAR Reserved;
  79. UCHAR CardInSocket;
  80. UCHAR CardEnabled;
  81. ULONG ControllerType;
  82. } PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION;
  83. //
  84. // macros to crack the ControllerId field of the socket info structure
  85. //
  86. #define PcmciaClassFromControllerType(type) ((PCMCIA_CONTROLLER_CLASS)((type) & 0xff))
  87. #define PcmciaModelFromControllerType(type) (((type) >> 8) & 0x3ffff)
  88. #define PcmciaRevisionFromControllerType(type) ((type) >> 26)
  89. // @@BEGIN_DDKSPLIT
  90. //
  91. // These are macros to manipulate the PcCardConfig type resource
  92. // descriptors - which are set by configmgr when passing in override
  93. // configurations.
  94. //
  95. //
  96. // Type of the descriptor: 1 .. 0xFFFF
  97. //
  98. #define DPTYPE_PCMCIA_CONFIGURATION 0x1
  99. #define DPTYPE_PCMCIA_MF_CONFIGURATION 0x2
  100. //
  101. // The device private structure for PC-Card configuration:
  102. //
  103. // Data[0] is configuration descriptior. Lay out below.
  104. // Byte 0: Configuration entry number (config index)
  105. // Byte 1: IO window flags
  106. // Byte 2: Type of configuration, hardcoded to DPTYPE_PCMCIA_CONFIGURATION
  107. // Byte 3: unused
  108. //
  109. // Data [1]: Cardbase offset for first memory window, flags in upper byte
  110. // Data [2]: Cardbase offset for second memory window, flags in upper byte
  111. //
  112. //
  113. // The device private structure for MF-Card configuration:
  114. //
  115. // Data[0] is configuration descriptior. Lay out below.
  116. // Byte 0: Configuration Option Register (config index)
  117. // Byte 1: Configuration and Status Register
  118. // Audio Enable (bit 3)
  119. // Byte 2: Type of configuration, hardcoded to DPTYPE_PCMCIA_MF_CONFIGURATION
  120. // Byte 3: Port Io resource descriptor index
  121. //
  122. // Data [1]: Configuration Register base
  123. // Data [2]: Unused
  124. //
  125. //
  126. // Macros for manipulating the IoResource device privates
  127. //
  128. #define PCMRES_SET_DESCRIPTOR_TYPE(IoResourceDesc, Type) (IoResourceDesc)->u.DevicePrivate.Data[0] |= ((Type) << sizeof(UCHAR)*8*2)
  129. #define PCMRES_GET_DESCRIPTOR_TYPE(IoResourceDesc) ((UCHAR) ((IoResourceDesc)->u.DevicePrivate.Data[0] >> sizeof(UCHAR)*8*2))
  130. //
  131. // Macros specific to DPTYPE_PCMCIA_CONFIGURATION
  132. //
  133. #define PCMRES_SET_CONFIG_INDEX(desc, ConfigIndex) (desc)->u.DevicePrivate.Data[0] |= ConfigIndex
  134. #define PCMRES_GET_CONFIG_INDEX(desc) ((UCHAR) ((desc)->u.DevicePrivate.Data[0]))
  135. //
  136. // Define maximum indeces for i/o and memory
  137. //
  138. #define PCMRES_PCMCIA_MAX_IO 2
  139. #define PCMRES_PCMCIA_MAX_MEM 2
  140. //
  141. // Flag definitions for Data[0]
  142. //
  143. #define PCMRESF_IO_16BIT_ACCESS 0x00000100
  144. #define PCMRESF_IO_ZERO_WAIT_8 0x00000200
  145. #define PCMRESF_IO_SOURCE_16 0x00000400
  146. #define PCMRESF_IO_WAIT_16 0x00000800
  147. #define PCMRESF_IO_FLAGS_2 0x0000F000 // used by second window
  148. #define PCMRESF_PCMCIA_TYPE_2 0x80000000 // new format indicator
  149. //
  150. // Flag definitions for Data[1], Data[2]
  151. //
  152. #define PCMRES_BASE64MB_MASK 0x03ffffff
  153. #define PCMRESF_MEM_16BIT_ACCESS 0x04000000
  154. #define PCMRESF_MEM_ATTRIBUTE 0x08000000
  155. #define PCMRESF_MEM_WAIT_1 0x10000000
  156. #define PCMRESF_MEM_WAIT_2 0x20000000
  157. #define PCMRESF_MEM_WAIT_3 0x30000000
  158. //
  159. // Macros specific to DPTYPE_PCMCIA_CONFIGURATION
  160. //
  161. #define PCMRES_SET_IO_FLAG(desc, index, flag) (desc)->u.DevicePrivate.Data[0] |= (flag << (index * 4))
  162. #define PCMRES_GET_IO_FLAG(desc, index, flag) (((desc)->u.DevicePrivate.Data[0] & (flag << (index * 4))) != 0)
  163. #define PCMRES_SET_MEMORY_FLAG(desc, index, flag) (desc)->u.DevicePrivate.Data[index+1] |= flag
  164. #define PCMRES_GET_MEMORY_FLAG(desc, index, flag) (((desc)->u.DevicePrivate.Data[index+1] & flag) != 0)
  165. #define PCMRES_SET_MEMORY_CARDBASE(desc, index, base) (desc)->u.DevicePrivate.Data[index+1] |= (base & PCMRES_BASE64MB_MASK)
  166. #define PCMRES_GET_MEMORY_CARDBASE(desc, index) ((ULONG) ((desc)->u.DevicePrivate.Data[index+1] & PCMRES_BASE64MB_MASK))
  167. #define PCMRES_SET_MEMORY_WAITSTATES PCMRES_SET_MEMORY_FLAG
  168. #define PCMRES_GET_MEMORY_WAITSTATES(desc, index) ((UCHAR) (((desc)->u.DevicePrivate.Data[index+1] >> 28)) & 3)
  169. //
  170. // Macros specific to DPTYPE_PCMCIA_MF_CONFIGURATION
  171. //
  172. #define PCMRESF_AUDIO_ENABLE 0x00000800
  173. #define PCMRES_MF_PORT_INDEX_SHIFT 24
  174. #define PCMRES_SET_CONFIG_OPTIONS(desc, opt) (desc)->u.DevicePrivate.Data[0] |= opt
  175. #define PCMRES_GET_CONFIG_OPTIONS(desc) ((UCHAR) ((desc)->u.DevicePrivate.Data[0]))
  176. #define PCMRES_SET_PORT_RESOURCE_INDEX(desc, Index) (desc)->u.DevicePrivate.Data[0] |= ((Index) << PCMRES_MF_PORT_INDEX_SHIFT)
  177. #define PCMRES_GET_PORT_RESOURCE_INDEX(desc) ((UCHAR) ((desc)->u.DevicePrivate.Data[0] >> PCMRES_MF_PORT_INDEX_SHIFT))
  178. #define PCMRES_SET_AUDIO_ENABLE(desc) (desc)->u.DevicePrivate.Data[0] |= PCMRESF_AUDIO_ENABLE
  179. #define PCMRES_GET_AUDIO_ENABLE(desc) ((UCHAR) ((desc)->u.DevicePrivate.Data[0] & PCMRESF_AUDIO_ENABLE) != 0)
  180. #define PCMRES_SET_CONFIG_REGISTER_BASE(desc, cfgbase) (desc)->u.DevicePrivate.Data[1] = cfgbase
  181. #define PCMRES_GET_CONFIG_REGISTER_BASE(desc) ((desc)->u.DevicePrivate.Data[1])
  182. //
  183. // The following macros are in the process of being obseleted
  184. //
  185. #define IORES_SET_DESCRIPTOR_TYPE PCMRES_SET_DESCRIPTOR_TYPE
  186. #define IORES_GET_DESCRIPTOR_TYPE PCMRES_GET_DESCRIPTOR_TYPE
  187. #define IORES_SET_CONFIG_INDEX PCMRES_SET_CONFIG_INDEX
  188. #define IORES_GET_CONFIG_INDEX PCMRES_GET_CONFIG_INDEX
  189. #define IORES_SET_IO_16BIT_ACCESS(desc) PCMRES_SET_IO_FLAG(desc, 0, PCMRESF_IO_16BIT_ACCESS)
  190. #define IORES_GET_IO_16BIT_ACCESS(desc) PCMRES_GET_IO_FLAG(desc, 0, PCMRESF_IO_16BIT_ACCESS)
  191. #define IORES_SET_IO_8BIT_ACCESS(desc)
  192. #define IORES_SET_IO_ZERO_WAIT_8(desc) PCMRES_SET_IO_FLAG(desc, 0, PCMRESF_IO_ZERO_WAIT_8)
  193. #define IORES_SET_IO_SOURCE_16(desc) PCMRES_SET_IO_FLAG(desc, 0, PCMRESF_IO_SOURCE_16)
  194. #define IORES_SET_IO_WAIT_16(desc) PCMRES_SET_IO_FLAG(desc, 0, PCMRESF_IO_WAIT_16)
  195. #define IORES_GET_IO_ZERO_WAIT_8(desc) PCMRES_GET_IO_FLAG(desc, 0, PCMRESF_IO_ZERO_WAIT_8)
  196. #define IORES_GET_IO_SOURCE_16(desc) PCMRES_GET_IO_FLAG(desc, 0, PCMRESF_IO_SOURCE_16)
  197. #define IORES_GET_IO_WAIT_16(desc) PCMRES_GET_IO_FLAG(desc, 0, PCMRESF_IO_WAIT_16)
  198. #define IORES_SET_MEM_16BIT_ACCESS(desc) PCMRES_SET_MEMORY_FLAG(desc, 0, PCMRESF_MEM_16BIT_ACCESS)
  199. #define IORES_GET_MEM_16BIT_ACCESS(desc) PCMRES_GET_MEMORY_FLAG(desc, 0, PCMRESF_MEM_16BIT_ACCESS)
  200. #define IORES_SET_MEM_8BIT_ACCESS(desc)
  201. #define IORES_SET_MEM_1_ATTRIBUTE_ACCESS(desc) PCMRES_SET_MEMORY_FLAG(desc, 0, PCMRESF_MEM_ATTRIBUTE)
  202. #define IORES_GET_MEM_1_ATTRIBUTE_ACCESS(desc) PCMRES_GET_MEMORY_FLAG(desc, 0, PCMRESF_MEM_ATTRIBUTE)
  203. #define IORES_SET_MEM_2_ATTRIBUTE_ACCESS(desc) PCMRES_SET_MEMORY_FLAG(desc, 1, PCMRESF_MEM_ATTRIBUTE)
  204. #define IORES_GET_MEM_2_ATTRIBUTE_ACCESS(desc) PCMRES_GET_MEMORY_FLAG(desc, 1, PCMRESF_MEM_ATTRIBUTE)
  205. #define IORES_SET_MEMORY_CARDBASE_1(desc, base) PCMRES_SET_MEMORY_CARDBASE(desc, 0, base)
  206. #define IORES_GET_MEMORY_CARDBASE_1(desc) PCMRES_GET_MEMORY_CARDBASE(desc, 0)
  207. #define IORES_SET_MEMORY_CARDBASE_2(desc, base) PCMRES_SET_MEMORY_CARDBASE(desc, 1, base)
  208. #define IORES_GET_MEMORY_CARDBASE_2(desc) PCMRES_GET_MEMORY_CARDBASE(desc, 1)
  209. #define IORES_SET_MEM_WAIT_ONE(desc) PCMRES_SET_MEMORY_WAITSTATES(desc, 0, PCMRESF_MEM_WAIT_1)
  210. #define IORES_SET_MEM_WAIT_TWO(desc) PCMRES_SET_MEMORY_WAITSTATES(desc, 0, PCMRESF_MEM_WAIT_2)
  211. #define IORES_SET_MEM_WAIT_THREE(desc) PCMRES_SET_MEMORY_WAITSTATES(desc, 0, PCMRESF_MEM_WAIT_3)
  212. #define IORES_GET_MEM_WAIT(desc) PCMRES_GET_MEMORY_WAITSTATES(desc, 0)
  213. #define IORES_SET_CONFIG_OPTIONS PCMRES_SET_CONFIG_OPTIONS
  214. #define IORES_GET_CONFIG_OPTIONS PCMRES_GET_CONFIG_OPTIONS
  215. #define IORES_SET_PORT_RESOURCE_INDEX PCMRES_SET_PORT_RESOURCE_INDEX
  216. #define IORES_GET_PORT_RESOURCE_INDEX PCMRES_GET_PORT_RESOURCE_INDEX
  217. #define IORES_SET_AUDIO_ENABLE PCMRES_SET_AUDIO_ENABLE
  218. #define IORES_GET_AUDIO_ENABLE PCMRES_GET_AUDIO_ENABLE
  219. #define IORES_SET_CONFIG_REGISTER_BASE PCMRES_SET_CONFIG_REGISTER_BASE
  220. #define IORES_GET_CONFIG_REGISTER_BASE PCMRES_GET_CONFIG_REGISTER_BASE
  221. #define CMRES_SET_DESCRIPTOR_TYPE IORES_SET_DESCRIPTOR_TYPE
  222. #define CMRES_GET_DESCRIPTOR_TYPE IORES_GET_DESCRIPTOR_TYPE
  223. #define CMRES_SET_CONFIG_INDEX IORES_SET_CONFIG_INDEX
  224. #define CMRES_GET_CONFIG_INDEX IORES_GET_CONFIG_INDEX
  225. #define CMRES_SET_IO_16BIT_ACCESS IORES_SET_IO_16BIT_ACCESS
  226. #define CMRES_GET_IO_16BIT_ACCESS IORES_GET_IO_16BIT_ACCESS
  227. #define CMRES_SET_IO_8BIT_ACCESS IORES_SET_IO_8BIT_ACCESS
  228. #define CMRES_SET_IO_ZERO_WAIT_8 IORES_SET_IO_ZERO_WAIT_8
  229. #define CMRES_SET_IO_SOURCE_16 IORES_SET_IO_SOURCE_16
  230. #define CMRES_SET_IO_WAIT_16 IORES_SET_IO_WAIT_16
  231. #define CMRES_GET_IO_ZERO_WAIT_8 IORES_GET_IO_ZERO_WAIT_8
  232. #define CMRES_GET_IO_SOURCE_16 IORES_GET_IO_SOURCE_16
  233. #define CMRES_GET_IO_WAIT_16 IORES_GET_IO_WAIT_16
  234. #define CMRES_SET_MEM_16BIT_ACCESS IORES_SET_MEM_16BIT_ACCESS
  235. #define CMRES_GET_MEM_16BIT_ACCESS IORES_GET_MEM_16BIT_ACCESS
  236. #define CMRES_SET_MEM_8BIT_ACCESS IORES_SET_MEM_8BIT_ACCESS
  237. #define CMRES_SET_MEM_WAIT_ONE IORES_SET_MEM_WAIT_ONE
  238. #define CMRES_SET_MEM_WAIT_TWO IORES_SET_MEM_WAIT_TWO
  239. #define CMRES_SET_MEM_WAIT_THREE IORES_SET_MEM_WAIT_THREE
  240. #define CMRES_GET_MEM_WAIT IORES_GET_MEM_WAIT
  241. #define CMRES_SET_MEM_1_ATTRIBUTE_ACCESS IORES_SET_MEM_1_ATTRIBUTE_ACCESS
  242. #define CMRES_GET_MEM_1_ATTRIBUTE_ACCESS IORES_GET_MEM_1_ATTRIBUTE_ACCESS
  243. #define CMRES_SET_MEM_2_ATTRIBUTE_ACCESS IORES_SET_MEM_2_ATTRIBUTE_ACCESS
  244. #define CMRES_GET_MEM_2_ATTRIBUTE_ACCESS IORES_GET_MEM_2_ATTRIBUTE_ACCESS
  245. #define CMRES_SET_MEMORY_CARDBASE_1 IORES_SET_MEMORY_CARDBASE_1
  246. #define CMRES_GET_MEMORY_CARDBASE_1 IORES_GET_MEMORY_CARDBASE_1
  247. #define CMRES_SET_MEMORY_CARDBASE_2 IORES_SET_MEMORY_CARDBASE_2
  248. #define CMRES_GET_MEMORY_CARDBASE_2 IORES_GET_MEMORY_CARDBASE_2
  249. #define CMRES_SET_CONFIG_OPTIONS IORES_SET_CONFIG_OPTIONS
  250. #define CMRES_GET_CONFIG_OPTIONS IORES_GET_CONFIG_OPTIONS
  251. #define CMRES_SET_PORT_RESOURCE_INDEX IORES_SET_PORT_RESOURCE_INDEX
  252. #define CMRES_GET_PORT_RESOURCE_INDEX IORES_GET_PORT_RESOURCE_INDEX
  253. #define CMRES_SET_AUDIO_ENABLE IORES_SET_AUDIO_ENABLE
  254. #define CMRES_GET_AUDIO_ENABLE IORES_GET_AUDIO_ENABLE
  255. #define CMRES_SET_CONFIG_REGISTER_BASE IORES_SET_CONFIG_REGISTER_BASE
  256. #define CMRES_GET_CONFIG_REGISTER_BASE IORES_GET_CONFIG_REGISTER_BASE
  257. //
  258. // Begin pcmcia exported interfaces to other drivers
  259. //
  260. // @@END_DDKSPLIT
  261. #ifdef _NTDDK_
  262. DEFINE_GUID( GUID_PCMCIA_INTERFACE_STANDARD, 0xbed5dadfL, 0x38fb, 0x11d1, 0x94, 0x62, 0x00, 0xc0, 0x4f, 0xb9, 0x60, 0xee);
  263. #define PCMCIA_MEMORY_8BIT_ACCESS 0
  264. #define PCMCIA_MEMORY_16BIT_ACCESS 1
  265. typedef
  266. BOOLEAN
  267. (*PPCMCIA_MODIFY_MEMORY_WINDOW)(
  268. IN PVOID Context,
  269. IN ULONGLONG HostBase,
  270. IN ULONGLONG CardBase,
  271. IN BOOLEAN Enable,
  272. IN ULONG WindowSize OPTIONAL,
  273. IN UCHAR AccessSpeed OPTIONAL,
  274. IN UCHAR BusWidth OPTIONAL,
  275. IN BOOLEAN IsAttributeMemory OPTIONAL
  276. );
  277. #define PCMCIA_VPP_0V 0
  278. #define PCMCIA_VPP_12V 1
  279. #define PCMCIA_VPP_IS_VCC 2
  280. typedef
  281. BOOLEAN
  282. (*PPCMCIA_SET_VPP)(
  283. IN PVOID Context,
  284. IN UCHAR VppLevel
  285. );
  286. typedef
  287. BOOLEAN
  288. (*PPCMCIA_IS_WRITE_PROTECTED)(
  289. IN PVOID Context
  290. );
  291. //
  292. // These are interfaces for manipulating memory windows, setting Vpp etc.,
  293. // primarily used by flash memory card drivers
  294. //
  295. typedef struct _PCMCIA_INTERFACE_STANDARD {
  296. USHORT Size;
  297. USHORT Version;
  298. PINTERFACE_REFERENCE InterfaceReference;
  299. PINTERFACE_DEREFERENCE InterfaceDereference;
  300. PVOID Context;
  301. PPCMCIA_MODIFY_MEMORY_WINDOW ModifyMemoryWindow;
  302. PPCMCIA_SET_VPP SetVpp;
  303. PPCMCIA_IS_WRITE_PROTECTED IsWriteProtected;
  304. } PCMCIA_INTERFACE_STANDARD, *PPCMCIA_INTERFACE_STANDARD;
  305. //
  306. // Definitions for PCMCIA_BUS_INTERFACE_STANDARD.
  307. // This interface is obtained using GUID_PCMCIA_BUS_INTERFACE_STANDARD
  308. // and is used for reading/writing to PCMCIA config. space
  309. //
  310. typedef
  311. ULONG
  312. (*PPCMCIA_READ_WRITE_CONFIG) (
  313. IN PVOID Context,
  314. IN ULONG WhichSpace,
  315. IN PUCHAR Buffer,
  316. IN ULONG Offset,
  317. IN ULONG Length
  318. );
  319. //
  320. // WhichSpace for IRP_MN_READ_CONFIG/WRITE_CONFIG
  321. // and PCMCIA_BUS_INTERFACE_STANDARD
  322. //
  323. typedef ULONG MEMORY_SPACE;
  324. #define PCCARD_PCI_CONFIGURATION_SPACE 0 // for cardbus cards
  325. #define PCCARD_ATTRIBUTE_MEMORY 1
  326. #define PCCARD_COMMON_MEMORY 2
  327. #define PCCARD_ATTRIBUTE_MEMORY_INDIRECT 3
  328. #define PCCARD_COMMON_MEMORY_INDIRECT 4
  329. // Legacy support
  330. //
  331. #define PCMCIA_CONFIG_SPACE PCCARD_ATTRIBUTE_MEMORY
  332. typedef struct _PCMCIA_BUS_INTERFACE_STANDARD {
  333. //
  334. // generic interface header
  335. //
  336. USHORT Size;
  337. USHORT Version;
  338. PVOID Context;
  339. PINTERFACE_REFERENCE InterfaceReference;
  340. PINTERFACE_DEREFERENCE InterfaceDereference;
  341. //
  342. // standard PCMCIA bus interfaces
  343. //
  344. PPCMCIA_READ_WRITE_CONFIG ReadConfig;
  345. PPCMCIA_READ_WRITE_CONFIG WriteConfig;
  346. } PCMCIA_BUS_INTERFACE_STANDARD, *PPCMCIA_BUS_INTERFACE_STANDARD;
  347. #endif
  348. #ifdef __cplusplus
  349. }
  350. #endif
  351. #endif