114 lines
2.7 KiB
C
114 lines
2.7 KiB
C
/*++
|
||
|
||
Copyright (c) 1991 - 1993 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
memcard.h
|
||
|
||
Abstract:
|
||
|
||
|
||
Author:
|
||
|
||
Neil Sandlin (neilsa) 26-Apr-99
|
||
|
||
Environment:
|
||
|
||
Kernel mode only.
|
||
|
||
Notes:
|
||
|
||
|
||
--*/
|
||
|
||
#ifndef _MEMCARD_H_
|
||
#define _MEMCARD_H_
|
||
|
||
|
||
#ifdef POOL_TAGGING
|
||
#ifdef ExAllocatePool
|
||
#undef ExAllocatePool
|
||
#endif
|
||
#define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,'cmeM')
|
||
#endif
|
||
|
||
//
|
||
// The byte in the boot sector that specifies the type of media, and
|
||
// the values that it can assume. We can often tell what type of media
|
||
// is in the drive by seeing which controller parameters allow us to read
|
||
// the diskette, but some different densities are readable with the same
|
||
// parameters so we use this byte to decide the media type.
|
||
//
|
||
#pragma pack(1)
|
||
|
||
typedef struct _BOOT_SECTOR_INFO {
|
||
UCHAR JumpByte;
|
||
UCHAR Ignore1[2];
|
||
UCHAR OemData[8];
|
||
USHORT BytesPerSector;
|
||
UCHAR SectorsPerCluster;
|
||
USHORT ReservedSectors;
|
||
UCHAR NumberOfFATs;
|
||
USHORT RootEntries;
|
||
USHORT TotalSectors;
|
||
UCHAR MediaDescriptor;
|
||
USHORT SectorsPerFAT;
|
||
USHORT SectorsPerTrack;
|
||
USHORT Heads;
|
||
ULONG BigHiddenSectors;
|
||
ULONG BigTotalSectors;
|
||
} BOOT_SECTOR_INFO, *PBOOT_SECTOR_INFO;
|
||
|
||
#pragma pack()
|
||
|
||
|
||
|
||
//
|
||
// Runtime device structures
|
||
//
|
||
//
|
||
// There is one MEMCARD_EXTENSION attached to the device object of each
|
||
// MEMCARDpy drive. Only data directly related to that drive (and the media
|
||
// in it) is stored here; common data is in CONTROLLER_DATA. So the
|
||
// MEMCARD_EXTENSION has a pointer to the CONTROLLER_DATA.
|
||
//
|
||
|
||
typedef struct _MEMCARD_EXTENSION {
|
||
PDEVICE_OBJECT UnderlyingPDO;
|
||
PDEVICE_OBJECT TargetObject;
|
||
PDEVICE_OBJECT DeviceObject;
|
||
UNICODE_STRING DeviceName;
|
||
UNICODE_STRING LinkName;
|
||
UNICODE_STRING InterfaceString;
|
||
|
||
ULONG MediaIndex;
|
||
ULONG ByteCapacity;
|
||
BOOLEAN IsStarted;
|
||
BOOLEAN IsRemoved;
|
||
BOOLEAN IsMemoryMapped;
|
||
BOOLEAN NoDrive;
|
||
|
||
ULONGLONG HostBase;
|
||
PCHAR MemoryWindowBase;
|
||
ULONG MemoryWindowSize;
|
||
|
||
ULONG TechnologyIndex;
|
||
|
||
PCMCIA_INTERFACE_STANDARD PcmciaInterface;
|
||
PCMCIA_BUS_INTERFACE_STANDARD PcmciaBusInterface;
|
||
} MEMCARD_EXTENSION, *PMEMCARD_EXTENSION;
|
||
|
||
|
||
//
|
||
// macros for ReadWriteMemory
|
||
//
|
||
|
||
#define MEMCARD_READ(Extension, Offset, Buffer, Size) \
|
||
MemCardReadWrite(Extension, Offset, Buffer, Size, FALSE)
|
||
|
||
#define MEMCARD_WRITE(Extension, Offset, Buffer, Size) \
|
||
MemCardReadWrite(Extension, Offset, Buffer, Size, TRUE)
|
||
|
||
#endif // _MEMCARD_H_
|