| /* | |
| * ntddpcm.h | |
| * | |
| * PCMCIA IOCTL interface | |
| * | |
| * This file is part of the w32api package. | |
| * | |
| * Contributors: | |
| * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> | |
| * | |
| * THIS SOFTWARE IS NOT COPYRIGHTED | |
| * | |
| * This source code is offered for use in the public domain. You may | |
| * use, modify or distribute it freely. | |
| * | |
| * This code is distributed in the hope that it will be useful but | |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY | |
| * DISCLAIMED. This includes but is not limited to warranties of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
| * | |
| */ | |
| #ifndef _NTDDPCMH_ | |
| #define _NTDDPCMH_ | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| #define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER | |
| #define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia" | |
| #define DD_PCMCIA_DEVICE_NAME_U L"\\\\.\\Pcmcia" | |
| #define IOCTL_GET_TUPLE_DATA \ | |
| CTL_CODE(IOCTL_PCMCIA_BASE, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS) | |
| #define IOCTL_SOCKET_INFORMATION \ | |
| CTL_CODE(IOCTL_PCMCIA_BASE, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS) | |
| #define DEVICE_IDENTIFIER_LENGTH 64 | |
| #define DRIVER_NAME_LENGTH 32 | |
| #define MANUFACTURER_NAME_LENGTH 64 | |
| #define PcmciaInvalidControllerType 0xffffffff | |
| typedef struct _TUPLE_REQUEST { | |
| USHORT Socket; | |
| } TUPLE_REQUEST, *PTUPLE_REQUEST; | |
| typedef enum _PCMCIA_CONTROLLER_CLASS { | |
| PcmciaInvalidControllerClass = -1, | |
| PcmciaIntelCompatible, | |
| PcmciaCardBusCompatible, | |
| PcmciaElcController, | |
| PcmciaDatabook, | |
| PcmciaPciPcmciaBridge, | |
| PcmciaCirrusLogic, | |
| PcmciaTI, | |
| PcmciaTopic, | |
| PcmciaRicoh, | |
| PcmciaDatabookCB, | |
| PcmciaOpti, | |
| PcmciaTrid, | |
| PcmciaO2Micro, | |
| PcmciaNEC, | |
| PcmciaNEC_98 | |
| } PCMCIA_CONTROLLER_CLASS, *PPCMCIA_CONTROLLER_CLASS; | |
| typedef struct _PCMCIA_SOCKET_INFORMATION { | |
| USHORT Socket; | |
| USHORT TupleCrc; | |
| UCHAR Manufacturer[MANUFACTURER_NAME_LENGTH]; | |
| UCHAR Identifier[DEVICE_IDENTIFIER_LENGTH]; | |
| UCHAR DriverName[DRIVER_NAME_LENGTH]; | |
| UCHAR DeviceFunctionId; | |
| UCHAR Reserved; | |
| UCHAR CardInSocket; | |
| UCHAR CardEnabled; | |
| ULONG ControllerType; | |
| } PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION; | |
| #define PcmciaClassFromControllerType(type) ((PCMCIA_CONTROLLER_CLASS)((type) & 0xff)) | |
| #define PcmciaModelFromControllerType(type) (((type) >> 8) & 0x3ffff) | |
| #define PcmciaRevisionFromControllerType(type) ((type) >> 26) | |
| DEFINE_GUID(GUID_PCMCIA_INTERFACE_STANDARD, \ | |
| 0xbed5dadfL, 0x38fb, 0x11d1, 0x94, 0x62, 0x00, 0xc0, 0x4f, 0xb9, 0x60, 0xee); | |
| typedef ULONG MEMORY_SPACE; | |
| typedef ULONG | |
| (NTAPI *PPCMCIA_READ_WRITE_CONFIG)( | |
| IN PVOID Context, | |
| IN ULONG WhichSpace, | |
| IN PUCHAR Buffer, | |
| IN ULONG Offset, | |
| IN ULONG Length); | |
| #define PCCARD_PCI_CONFIGURATION_SPACE 0 | |
| #define PCCARD_ATTRIBUTE_MEMORY 1 | |
| #define PCCARD_COMMON_MEMORY 2 | |
| #define PCCARD_ATTRIBUTE_MEMORY_INDIRECT 3 | |
| #define PCCARD_COMMON_MEMORY_INDIRECT 4 | |
| typedef struct _PCMCIA_BUS_INTERFACE_STANDARD { | |
| USHORT Size; | |
| USHORT Version; | |
| PVOID Context; | |
| PINTERFACE_REFERENCE InterfaceReference; | |
| PINTERFACE_DEREFERENCE InterfaceDereference; | |
| PPCMCIA_READ_WRITE_CONFIG ReadConfig; | |
| PPCMCIA_READ_WRITE_CONFIG WriteConfig; | |
| } PCMCIA_BUS_INTERFACE_STANDARD, *PPCMCIA_BUS_INTERFACE_STANDARD; | |
| #define PCMCIA_MEMORY_8BIT_ACCESS 0 | |
| #define PCMCIA_MEMORY_16BIT_ACCESS 1 | |
| typedef BOOLEAN | |
| (NTAPI *PPCMCIA_MODIFY_MEMORY_WINDOW)( | |
| IN PVOID Context, | |
| IN ULONGLONG HostBase, | |
| IN ULONGLONG CardBase, | |
| IN BOOLEAN Enable, | |
| IN ULONG WindowSize OPTIONAL, | |
| IN UCHAR AccessSpeed OPTIONAL, | |
| IN UCHAR BusWidth OPTIONAL, | |
| IN BOOLEAN IsAttributeMemory OPTIONAL); | |
| #define PCMCIA_VPP_0V 0 | |
| #define PCMCIA_VPP_12V 1 | |
| #define PCMCIA_VPP_IS_VCC 2 | |
| typedef BOOLEAN | |
| (NTAPI *PPCMCIA_SET_VPP)( | |
| IN PVOID Context, | |
| IN UCHAR VppLevel); | |
| typedef BOOLEAN | |
| (NTAPI *PPCMCIA_IS_WRITE_PROTECTED)( | |
| IN PVOID Context); | |
| typedef struct _PCMCIA_INTERFACE_STANDARD { | |
| USHORT Size; | |
| USHORT Version; | |
| PINTERFACE_REFERENCE InterfaceReference; | |
| PINTERFACE_DEREFERENCE InterfaceDereference; | |
| PVOID Context; | |
| PPCMCIA_MODIFY_MEMORY_WINDOW ModifyMemoryWindow; | |
| PPCMCIA_SET_VPP SetVpp; | |
| PPCMCIA_IS_WRITE_PROTECTED IsWriteProtected; | |
| } PCMCIA_INTERFACE_STANDARD, *PPCMCIA_INTERFACE_STANDARD; | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* _NTDDPCMH_ */ |