/* * ntddpcm.h * * PCMCIA IOCTL interface * * This file is part of the w32api package. * * Contributors: * Created by Casper S. Hornstrup * * 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. * */ #pragma once #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 _Function_class_(PCMCIA_READ_CONFIG) ULONG (NTAPI PCMCIA_READ_CONFIG)( _In_opt_ PVOID Context, _In_ ULONG WhichSpace, _Out_writes_bytes_all_(Length) PUCHAR Buffer, _In_ ULONG Offset, _In_ ULONG Length); typedef PCMCIA_READ_CONFIG *PPCMCIA_READ_CONFIG; typedef _Function_class_(PCMCIA_WRITE_CONFIG) ULONG (NTAPI PCMCIA_WRITE_CONFIG)( _In_opt_ PVOID Context, _In_ ULONG WhichSpace, _In_reads_bytes_(Length) PUCHAR Buffer, _In_ ULONG Offset, _In_ ULONG Length); typedef PCMCIA_WRITE_CONFIG *PPCMCIA_WRITE_CONFIG; #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 _Function_class_(PCMCIA_MODIFY_MEMORY_WINDOW) BOOLEAN (NTAPI PCMCIA_MODIFY_MEMORY_WINDOW)( _In_opt_ PVOID Context, _In_ ULONGLONG HostBase, _In_ ULONGLONG CardBase, _In_ BOOLEAN Enable, _In_opt_ ULONG WindowSize, _In_opt_ UCHAR AccessSpeed, _In_opt_ UCHAR BusWidth, _In_opt_ BOOLEAN IsAttributeMemory); typedef PCMCIA_MODIFY_MEMORY_WINDOW *PPCMCIA_MODIFY_MEMORY_WINDOW; #define PCMCIA_VPP_0V 0 #define PCMCIA_VPP_12V 1 #define PCMCIA_VPP_IS_VCC 2 typedef _Function_class_(PCMCIA_SET_VPP) BOOLEAN (NTAPI PCMCIA_SET_VPP)( _In_opt_ PVOID Context, _In_ UCHAR VppLevel); typedef PCMCIA_SET_VPP *PPCMCIA_SET_VPP; typedef _Function_class_(PCMCIA_IS_WRITE_PROTECTED) BOOLEAN (NTAPI PCMCIA_IS_WRITE_PROTECTED)( _In_opt_ PVOID Context); typedef PCMCIA_IS_WRITE_PROTECTED *PPCMCIA_IS_WRITE_PROTECTED; 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_ */