Embed:
(wiki syntax)
Show/hide line numbers
ntddpcm.h
00001 /* 00002 * ntddpcm.h 00003 * 00004 * PCMCIA IOCTL interface 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __NTDDPCM_H 00024 #define __NTDDPCM_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 00036 #define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER 00037 00038 #define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia" 00039 #define DD_PCMCIA_DEVICE_NAME_U L"\\\\.\\Pcmcia" 00040 00041 #define IOCTL_GET_TUPLE_DATA \ 00042 CTL_CODE(IOCTL_PCMCIA_BASE, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS) 00043 00044 #define IOCTL_SOCKET_INFORMATION \ 00045 CTL_CODE(IOCTL_PCMCIA_BASE, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS) 00046 00047 #define DEVICE_IDENTIFIER_LENGTH 64 00048 #define DRIVER_NAME_LENGTH 32 00049 #define MANUFACTURER_NAME_LENGTH 64 00050 00051 #define PcmciaInvalidControllerType 0xffffffff 00052 00053 typedef struct _TUPLE_REQUEST { 00054 USHORT Socket; 00055 } TUPLE_REQUEST, *PTUPLE_REQUEST; 00056 00057 typedef enum _PCMCIA_CONTROLLER_CLASS { 00058 PcmciaInvalidControllerClass = -1, 00059 PcmciaIntelCompatible, 00060 PcmciaCardBusCompatible, 00061 PcmciaElcController, 00062 PcmciaDatabook, 00063 PcmciaPciPcmciaBridge, 00064 PcmciaCirrusLogic, 00065 PcmciaTI, 00066 PcmciaTopic, 00067 PcmciaRicoh, 00068 PcmciaDatabookCB, 00069 PcmciaOpti, 00070 PcmciaTrid, 00071 PcmciaO2Micro, 00072 PcmciaNEC, 00073 PcmciaNEC_98 00074 } PCMCIA_CONTROLLER_CLASS, *PPCMCIA_CONTROLLER_CLASS; 00075 00076 typedef struct _PCMCIA_SOCKET_INFORMATION { 00077 USHORT Socket; 00078 USHORT TupleCrc; 00079 UCHAR Manufacturer[MANUFACTURER_NAME_LENGTH]; 00080 UCHAR Identifier[DEVICE_IDENTIFIER_LENGTH]; 00081 UCHAR DriverName[DRIVER_NAME_LENGTH]; 00082 UCHAR DeviceFunctionId; 00083 UCHAR Reserved; 00084 UCHAR CardInSocket; 00085 UCHAR CardEnabled; 00086 ULONG ControllerType; 00087 } PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION; 00088 00089 #define PcmciaClassFromControllerType(type) ((PCMCIA_CONTROLLER_CLASS)((type) & 0xff)) 00090 #define PcmciaModelFromControllerType(type) (((type) >> 8) & 0x3ffff) 00091 #define PcmciaRevisionFromControllerType(type) ((type) >> 26) 00092 00093 00094 DEFINE_GUID(GUID_PCMCIA_INTERFACE_STANDARD, \ 00095 0xbed5dadfL, 0x38fb, 0x11d1, 0x94, 0x62, 0x00, 0xc0, 0x4f, 0xb9, 0x60, 0xee); 00096 00097 typedef ULONG MEMORY_SPACE; 00098 00099 typedef ULONG STDCALL 00100 (*PPCMCIA_READ_WRITE_CONFIG)( 00101 /*IN*/ PVOID Context, 00102 /*IN*/ ULONG WhichSpace, 00103 /*IN*/ PUCHAR Buffer, 00104 /*IN*/ ULONG Offset, 00105 /*IN*/ ULONG Length); 00106 00107 #define PCCARD_PCI_CONFIGURATION_SPACE 0 00108 #define PCCARD_ATTRIBUTE_MEMORY 1 00109 #define PCCARD_COMMON_MEMORY 2 00110 #define PCCARD_ATTRIBUTE_MEMORY_INDIRECT 3 00111 #define PCCARD_COMMON_MEMORY_INDIRECT 4 00112 00113 typedef struct _PCMCIA_BUS_INTERFACE_STANDARD { 00114 USHORT Size; 00115 USHORT Version; 00116 PVOID Context; 00117 PINTERFACE_REFERENCE InterfaceReference; 00118 PINTERFACE_DEREFERENCE InterfaceDereference; 00119 PPCMCIA_READ_WRITE_CONFIG ReadConfig; 00120 PPCMCIA_READ_WRITE_CONFIG WriteConfig; 00121 } PCMCIA_BUS_INTERFACE_STANDARD, *PPCMCIA_BUS_INTERFACE_STANDARD; 00122 00123 #define PCMCIA_MEMORY_8BIT_ACCESS 0 00124 #define PCMCIA_MEMORY_16BIT_ACCESS 1 00125 00126 typedef BOOLEAN STDCALL 00127 (*PPCMCIA_MODIFY_MEMORY_WINDOW)( 00128 /*IN*/ PVOID Context, 00129 /*IN*/ ULONGLONG HostBase, 00130 /*IN*/ ULONGLONG CardBase, 00131 /*IN*/ BOOLEAN Enable, 00132 /*IN*/ ULONG WindowSize /*OPTIONAL*/, 00133 /*IN*/ UCHAR AccessSpeed /*OPTIONAL*/, 00134 /*IN*/ UCHAR BusWidth /*OPTIONAL*/, 00135 /*IN*/ BOOLEAN IsAttributeMemory /*OPTIONAL*/); 00136 00137 #define PCMCIA_VPP_0V 0 00138 #define PCMCIA_VPP_12V 1 00139 #define PCMCIA_VPP_IS_VCC 2 00140 00141 typedef BOOLEAN STDCALL 00142 (*PPCMCIA_SET_VPP)( 00143 /*IN*/ PVOID Context, 00144 /*IN*/ UCHAR VppLevel); 00145 00146 typedef BOOLEAN STDCALL 00147 (*PPCMCIA_IS_WRITE_PROTECTED)( 00148 /*IN*/ PVOID Context); 00149 00150 typedef struct _PCMCIA_INTERFACE_STANDARD { 00151 USHORT Size; 00152 USHORT Version; 00153 PINTERFACE_REFERENCE InterfaceReference; 00154 PINTERFACE_DEREFERENCE InterfaceDereference; 00155 PVOID Context; 00156 PPCMCIA_MODIFY_MEMORY_WINDOW ModifyMemoryWindow; 00157 PPCMCIA_SET_VPP SetVpp; 00158 PPCMCIA_IS_WRITE_PROTECTED IsWriteProtected; 00159 } PCMCIA_INTERFACE_STANDARD, *PPCMCIA_INTERFACE_STANDARD; 00160 00161 #ifdef __cplusplus 00162 } 00163 #endif 00164 00165 #endif /* __NTDDPCM_H */
Generated on Tue Jul 12 2022 19:59:54 by
1.7.2