Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ntddpcm.h Source File

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 */