NT4/public/sdk/inc/ntddpcm.h

162 lines
4.2 KiB
C

/*++
Copyright (c) 1994 Digital Equipment Corporation
Module Name:
ntddpcm.h
Abstract:
This is the include file that defines all constants and types for
accessing the PCMCIA Adapters.
Author:
Jeff McLeman
Revision History:
--*/
#ifndef _NTDDPCMH_
#define _NTDDPCMH_
//
// Device Name - this string is the name of the device. It is the name
// that should be passed to NtOpenFile when accessing the device.
//
// Note: For devices that support multiple units, it should be suffixed
// with the Ascii representation of the unit number.
//
#define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER
#define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia"
//
// IoControlCode values for this device.
//
// Warning: Remember that the low two bits of the code specify how the
// buffers are passed to the driver!
//
#define IOCTL_GET_TUPLE_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, 3000, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_CONFIGURE_CARD CTL_CODE(FILE_DEVICE_CONTROLLER, 3001, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_CARD_EVENT CTL_CODE(FILE_DEVICE_CONTROLLER, 3002, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_CARD_REGISTERS CTL_CODE(FILE_DEVICE_CONTROLLER, 3003, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SOCKET_INFORMATION CTL_CODE(FILE_DEVICE_CONTROLLER, 3004, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PCMCIA_CONFIGURATION CTL_CODE(FILE_DEVICE_CONTROLLER, 3005, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_OPEN_ATTRIBUTE_WINDOW CTL_CODE(FILE_DEVICE_CONTROLLER, 3006, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_CLOSE_ATTRIBUTE_WINDOW CTL_CODE(FILE_DEVICE_CONTROLLER, 3007, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
//
// Tuple request parameters.
//
#define PCMCIA_MAX_IO_PORT_WINDOWS 2
#define PCMCIA_MAX_MEMORY_WINDOWS 4
typedef struct _TUPLE_REQUEST {
USHORT Socket;
} TUPLE_REQUEST, *PTUPLE_REQUEST;
typedef struct _PCMCIA_CONFIG_REQUEST {
USHORT Socket;
UCHAR ConfigureIo;
UCHAR ConfigurationIndex;
//
// Query just returns the current socket configuration.
//
UCHAR Query;
//
// Power - zero means power off the socket (i.e. remove configuration)
//
UCHAR Power;
//
// IRQ support.
//
UCHAR DeviceIrq;
UCHAR CardReadyIrq;
//
// I/O port support.
//
ULONG NumberOfIoPortRanges;
USHORT IoPorts[PCMCIA_MAX_IO_PORT_WINDOWS];
USHORT IoPortLength[PCMCIA_MAX_IO_PORT_WINDOWS];
USHORT IoPort16[PCMCIA_MAX_IO_PORT_WINDOWS];
//
// Memory window support.
//
ULONG NumberOfMemoryRanges;
ULONG HostMemoryWindow[PCMCIA_MAX_MEMORY_WINDOWS];
ULONG PCCARDMemoryWindow[PCMCIA_MAX_MEMORY_WINDOWS];
ULONG MemoryWindowLength[PCMCIA_MAX_MEMORY_WINDOWS];
BOOLEAN AttributeMemory[PCMCIA_MAX_MEMORY_WINDOWS];
} PCMCIA_CONFIG_REQUEST, *PPCMCIA_CONFIG_REQUEST;
#define MANUFACTURER_NAME_LENGTH 64
#define DEVICE_IDENTIFIER_LENGTH 64
#define DRIVER_NAME_LENGTH 32
//
// Controller types returned in socket information structure.
//
#define PcmciaIntelCompatible 0
#define PcmciaElcController 1
#define PcmciaCirrusLogic 2
#define PcmciaDatabook 3
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 ControllerType;
UCHAR CardInSocket;
UCHAR CardEnabled;
} PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION;
//
// Structure returned to provide current configuration information
// for pcmcia driver.
//
typedef struct _PCMCIA_CONFIGURATION {
USHORT Sockets;
UCHAR Reserved;
UCHAR ControllerType;
USHORT IoPortBase;
USHORT IoPortSize;
ULONG MemoryWindowPhysicalAddress;
} PCMCIA_CONFIGURATION, *PPCMCIA_CONFIGURATION;
#endif