4 * PCMCIA IOCTL interface
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
30 #define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER
32 #define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia"
33 #define DD_PCMCIA_DEVICE_NAME_U L"\\\\.\\Pcmcia"
35 #define IOCTL_GET_TUPLE_DATA \
36 CTL_CODE(IOCTL_PCMCIA_BASE, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS)
38 #define IOCTL_SOCKET_INFORMATION \
39 CTL_CODE(IOCTL_PCMCIA_BASE, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS)
41 #define DEVICE_IDENTIFIER_LENGTH 64
42 #define DRIVER_NAME_LENGTH 32
43 #define MANUFACTURER_NAME_LENGTH 64
45 #define PcmciaInvalidControllerType 0xffffffff
47 typedef struct _TUPLE_REQUEST
{
49 } TUPLE_REQUEST
, *PTUPLE_REQUEST
;
51 typedef enum _PCMCIA_CONTROLLER_CLASS
{
52 PcmciaInvalidControllerClass
= -1,
53 PcmciaIntelCompatible
,
54 PcmciaCardBusCompatible
,
57 PcmciaPciPcmciaBridge
,
68 } PCMCIA_CONTROLLER_CLASS
, *PPCMCIA_CONTROLLER_CLASS
;
70 typedef struct _PCMCIA_SOCKET_INFORMATION
{
73 UCHAR Manufacturer
[MANUFACTURER_NAME_LENGTH
];
74 UCHAR Identifier
[DEVICE_IDENTIFIER_LENGTH
];
75 UCHAR DriverName
[DRIVER_NAME_LENGTH
];
76 UCHAR DeviceFunctionId
;
81 } PCMCIA_SOCKET_INFORMATION
, *PPCMCIA_SOCKET_INFORMATION
;
83 #define PcmciaClassFromControllerType(type) ((PCMCIA_CONTROLLER_CLASS)((type) & 0xff))
84 #define PcmciaModelFromControllerType(type) (((type) >> 8) & 0x3ffff)
85 #define PcmciaRevisionFromControllerType(type) ((type) >> 26)
88 DEFINE_GUID(GUID_PCMCIA_INTERFACE_STANDARD
, \
89 0xbed5dadfL
, 0x38fb, 0x11d1, 0x94, 0x62, 0x00, 0xc0, 0x4f, 0xb9, 0x60, 0xee);
91 typedef ULONG MEMORY_SPACE
;
94 (NTAPI
*PPCMCIA_READ_WRITE_CONFIG
)(
101 #define PCCARD_PCI_CONFIGURATION_SPACE 0
102 #define PCCARD_ATTRIBUTE_MEMORY 1
103 #define PCCARD_COMMON_MEMORY 2
104 #define PCCARD_ATTRIBUTE_MEMORY_INDIRECT 3
105 #define PCCARD_COMMON_MEMORY_INDIRECT 4
107 typedef struct _PCMCIA_BUS_INTERFACE_STANDARD
{
111 PINTERFACE_REFERENCE InterfaceReference
;
112 PINTERFACE_DEREFERENCE InterfaceDereference
;
113 PPCMCIA_READ_WRITE_CONFIG ReadConfig
;
114 PPCMCIA_READ_WRITE_CONFIG WriteConfig
;
115 } PCMCIA_BUS_INTERFACE_STANDARD
, *PPCMCIA_BUS_INTERFACE_STANDARD
;
117 #define PCMCIA_MEMORY_8BIT_ACCESS 0
118 #define PCMCIA_MEMORY_16BIT_ACCESS 1
121 (NTAPI
*PPCMCIA_MODIFY_MEMORY_WINDOW
)(
123 IN ULONGLONG HostBase
,
124 IN ULONGLONG CardBase
,
126 IN ULONG WindowSize OPTIONAL
,
127 IN UCHAR AccessSpeed OPTIONAL
,
128 IN UCHAR BusWidth OPTIONAL
,
129 IN BOOLEAN IsAttributeMemory OPTIONAL
);
131 #define PCMCIA_VPP_0V 0
132 #define PCMCIA_VPP_12V 1
133 #define PCMCIA_VPP_IS_VCC 2
136 (NTAPI
*PPCMCIA_SET_VPP
)(
141 (NTAPI
*PPCMCIA_IS_WRITE_PROTECTED
)(
144 typedef struct _PCMCIA_INTERFACE_STANDARD
{
147 PINTERFACE_REFERENCE InterfaceReference
;
148 PINTERFACE_DEREFERENCE InterfaceDereference
;
150 PPCMCIA_MODIFY_MEMORY_WINDOW ModifyMemoryWindow
;
151 PPCMCIA_SET_VPP SetVpp
;
152 PPCMCIA_IS_WRITE_PROTECTED IsWriteProtected
;
153 } PCMCIA_INTERFACE_STANDARD
, *PPCMCIA_INTERFACE_STANDARD
;
159 #endif /* __NTDDPCM_H */