You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
847 lines
23 KiB
847 lines
23 KiB
#ifndef TFFSPORT_H
|
|
#define TFFSPORT_H
|
|
|
|
#include "wmilib.h"
|
|
#include "wmistr.h"
|
|
|
|
#define VENDORSTRING "MSystems"
|
|
#define PRODUCTSTRING "DiskOnChip2000 "
|
|
#define REVISIONSTRING "1.00"
|
|
#define SERIALSTRING "0001"
|
|
|
|
#define VENDORSTRINGSIZE 8
|
|
#define PRODUCTSTRINGSIZE 16
|
|
#define REVISIONSTRINGSIZE 4
|
|
#define SERIALSTRINGSIZE 4
|
|
|
|
#define DISKONCHIP_WINDOW_SIZE 0x2000
|
|
#define START_SEARCH_ADDRESS 0xc8000L
|
|
#define END_SEARCH_ADDRESS 0xda000L
|
|
#define DISKONCHIP_INTERFACE Isa
|
|
#define DISKONCHIP_BUSNUMBER 0
|
|
|
|
#define d_SEARCH_ADDRESS 0xd0000L
|
|
#define dd_SEARCH_ADDRESS 0xd4000L
|
|
|
|
#define TFFS_MEMORY_SPACE 0
|
|
#define TFFS_IO_SPACE 1
|
|
|
|
#define MAX_TRANSFER_SIZE_PER_SRB (0x10000)
|
|
#define MODE_DATA_SIZE 192
|
|
|
|
#define DEVICE_DEFAULT_IDLE_TIMEOUT 0xffffffff
|
|
#define DEVICE_VERY_LONG_IDLE_TIMEOUT 0xfffffffe
|
|
|
|
// Device state flags
|
|
#define DEVICE_FLAG_STOPPED 0x00000001
|
|
#define DEVICE_FLAG_REMOVED 0x00000002
|
|
#define DEVICE_FLAG_CLAIMED 0x00000004
|
|
#define DEVICE_FLAG_QUERY_STOP_REMOVE 0x00000008
|
|
#define DEVICE_FLAG_STARTED 0x00000010
|
|
#define DEVICE_FLAG_HOLD_IRPS 0x00000020
|
|
#define DEVICE_FLAG_CHILD_REMOVED 0x00000040
|
|
|
|
// Removed WE DONT NEED THIS FLAG
|
|
// instead examine the threadObject .. that object gets nulled
|
|
// when the thread has exited.
|
|
// #define DEVICE_FLAG_THREAD 0x00000080
|
|
|
|
#define DRIVER_PARAMETER_SUBKEY "Parameters"
|
|
#define LEGACY_DETECTION L"LegacyDetection"
|
|
#define DRIVER_OBJECT_EXTENSION_ID DriverEntry
|
|
|
|
#define NUM_WMI_MINOR_FUNCTION (0xa)
|
|
|
|
|
|
|
|
typedef struct _TempINFO{
|
|
long baseAddress;
|
|
unsigned char nextPartition;
|
|
}TempINFO;
|
|
|
|
typedef struct /* represents DOC 2000 & Millenium memory window */
|
|
{
|
|
UCHAR IPLpart1[0x800]; /* read not used here */
|
|
volatile UCHAR IPLpart2[0x800]; /* read IO for MDOC */
|
|
volatile UCHAR chipId; /* read */
|
|
volatile UCHAR DOCstatus; /* read */
|
|
volatile UCHAR DOCcontrol; /* write */
|
|
volatile UCHAR ASICselect; /* read write */
|
|
volatile UCHAR signals; /* read write */
|
|
volatile UCHAR deviceSelector; /* read write */
|
|
volatile UCHAR ECCconfig; /* write */
|
|
volatile UCHAR ECCstatus; /* read */
|
|
volatile UCHAR test[5]; /* not used here */
|
|
volatile UCHAR slowIO; /* read write */
|
|
UCHAR filler1[2]; /* -- -- */
|
|
volatile UCHAR syndrom[6]; /* read */
|
|
UCHAR filler2[5]; /* -- -- */
|
|
volatile UCHAR aliasResolution; /* read write MDOC only */
|
|
volatile UCHAR configInput; /* read write - || - */
|
|
volatile UCHAR readPipeInit; /* read - || - */
|
|
volatile UCHAR writePipeTerm; /* write - || - */
|
|
volatile UCHAR readLastData; /* read write - || - */
|
|
volatile UCHAR NOPreg; /* read write - || - */
|
|
UCHAR filler3[0x1D]; /* -- -- */
|
|
volatile UCHAR ROMwriteEnable; /* write DOC only */
|
|
volatile UCHAR foudaryTest; /* write */
|
|
UCHAR filler4[0x800-0x40]; /* -- -- */
|
|
volatile UCHAR io[0x800]; /* read write */
|
|
} DOC2window;
|
|
|
|
typedef struct /* represents MDOC PLUS memory window */
|
|
{
|
|
unsigned char IPLpart1[0x800]; /* 0000-07ff */
|
|
volatile unsigned char io1[0x800]; /* 0800-0fff */
|
|
volatile unsigned char chipId; /* 1000 */
|
|
unsigned char filler1; /* -- -- */
|
|
volatile unsigned char NopReg; /* 1002 */
|
|
unsigned char filler2; /* -- -- */
|
|
volatile unsigned char AliasResolution; /* 1004 */
|
|
unsigned char filler3; /* -- -- */
|
|
volatile unsigned char DOCcontrol; /* 1006 */
|
|
unsigned char filler4; /* -- -- */
|
|
volatile unsigned char DeviceIDselect; /* 1008 */
|
|
unsigned char filler5; /* -- -- */
|
|
volatile unsigned char ConfigReg; /* 100A */
|
|
unsigned char filler6; /* -- -- */
|
|
volatile unsigned char OutputReg; /* 100C */
|
|
unsigned char filler7; /* -- -- */
|
|
volatile unsigned char IntCntReg; /* 100E */
|
|
unsigned char filler8; /* -- -- */
|
|
volatile unsigned char IntVecReg; /* 1010 */
|
|
unsigned char filler9; /* -- -- */
|
|
volatile unsigned char OutputEnableReg; /* 1012 */
|
|
unsigned char filler10[0xB]; /* -- -- */
|
|
volatile unsigned char FlSlowReg[2]; /* 101E - 101F */
|
|
volatile unsigned char FlCntReg; /* 1020 */
|
|
unsigned char filler11; /* -- -- */
|
|
volatile unsigned char FlSelectReg; /* 1022 */
|
|
unsigned char filler12; /* -- -- */
|
|
volatile unsigned char FlCmdReg; /* 1024 */
|
|
unsigned char filler13; /* -- -- */
|
|
volatile unsigned char FlAddressReg; /* 1026 */
|
|
unsigned char filler14; /* -- -- */
|
|
volatile unsigned char FlDataReg[2]; /* 1028-1029 */
|
|
volatile unsigned char readPipeInit; /* 102A */
|
|
unsigned char filler15; /* -- -- */
|
|
volatile unsigned char readLastData[2]; /* 102C-102D */
|
|
volatile unsigned char WritePipeTerm; /* 102E */
|
|
unsigned char filler16[17]; /* -- -- */
|
|
volatile unsigned char syndrom[6]; /* 1040-1045 */
|
|
volatile unsigned char EccCntReg; /* 1046 */
|
|
unsigned char filler17; /* -- -- */
|
|
volatile unsigned char CotpReg; /* 1048 */
|
|
unsigned char filler18[17]; /* -- -- */
|
|
volatile unsigned char FlGeometryReg; /* 105A */
|
|
unsigned char filler19; /* -- -- */
|
|
volatile unsigned char DataProtect[0x17]; /* 105C-1072 */
|
|
unsigned char filler20; /* -- -- */
|
|
volatile unsigned char DownloadReg; /* 1074 */
|
|
unsigned char filler21; /* -- -- */
|
|
volatile unsigned char DocCntConfirmReg; /* 1076 */
|
|
unsigned char filler22; /* -- -- */
|
|
volatile unsigned char ProtectionReg; /* 1078 */
|
|
unsigned char filler23[0x6]; /* -- -- */
|
|
volatile unsigned char foundryTest; /* 107E */
|
|
unsigned char filler24; /* -- -- */
|
|
unsigned char filler25[0x77F]; /* -- -- */
|
|
volatile unsigned char io2[0x7FF]; /* 1800-1FFF */
|
|
volatile unsigned char PowerDownReg; /* 1FFF */
|
|
} MDOCPwindow;
|
|
/* MDOC PLUS */
|
|
|
|
|
|
typedef struct _NTpcicParams {
|
|
PHYSICAL_ADDRESS phWindowBase;
|
|
ULONGLONG physWindow;
|
|
ULONG windowSize;
|
|
ULONG addressSpace;
|
|
PVOID windowBase;
|
|
INTERFACE_TYPE InterfaceType;
|
|
ULONG BusNumber;
|
|
} NTpcicParams;
|
|
|
|
typedef struct _TRUEFFSDRIVER_EXTENSION {
|
|
|
|
UNICODE_STRING RegistryPath;
|
|
|
|
} TRUEFFSDRIVER_EXTENSION, *PTRUEFFSDRIVER_EXTENSION;
|
|
|
|
|
|
#define EXTENSION_COMMON_HEADER PDEVICE_OBJECT DeviceObject; \
|
|
PDEVICE_OBJECT LowerDeviceObject; \
|
|
PDRIVER_OBJECT DriverObject; \
|
|
DEVICE_POWER_STATE DevicePowerState; \
|
|
SYSTEM_POWER_STATE SystemPowerState; \
|
|
ULONG PagingPathCount; \
|
|
ULONG HiberPathCount; \
|
|
ULONG CrashDumpPathCount; \
|
|
WMILIB_CONTEXT WmiLibInfo
|
|
|
|
typedef struct _DEVICE_EXTENSION_HEADER {
|
|
|
|
EXTENSION_COMMON_HEADER;
|
|
|
|
} DEVICE_EXTENSION_HEADER, * PDEVICE_EXTENSION_HEADER;
|
|
|
|
typedef struct _DEVICE_EXTENSION {
|
|
EXTENSION_COMMON_HEADER;
|
|
PDEVICE_OBJECT MainPdo;
|
|
PDEVICE_OBJECT ChildPdo;
|
|
ULONG DeviceFlags;
|
|
ULONG Cylinders;
|
|
ULONG NumberOfHeads;
|
|
ULONG SectorsPerTrack;
|
|
ULONG BytesPerSector;
|
|
ULONG noOfHiddenSectors;
|
|
ULONG totalSectors;
|
|
PSCSI_REQUEST_BLOCK CurrentSrb;
|
|
PUSHORT DataBuffer;
|
|
BOOLEAN SymbolicLinkCreated;
|
|
ULONG TrueffsDeviceNumber;
|
|
ULONG UnitNumber;
|
|
ULONG ScsiPortNumber;
|
|
UCHAR ScsiDeviceType;
|
|
KSPIN_LOCK ExtensionDataSpinLock;
|
|
LIST_ENTRY listEntry;
|
|
KSEMAPHORE requestSemaphore;
|
|
KSPIN_LOCK listSpinLock;
|
|
LONG threadReferenceCount;
|
|
KEVENT PendingIRPEvent;
|
|
BOOLEAN removableMedia;
|
|
ULONG NumberOfDisksPoweredUp;
|
|
NTpcicParams pcmciaParams;
|
|
PKTHREAD TffsportThreadObject;
|
|
BOOLEAN IsPartitonTableWritten;
|
|
BOOLEAN IsWriteProtected;
|
|
UCHAR PartitonTable[0x200];
|
|
BOOLEAN IsSWWriteProtected;
|
|
|
|
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
|
|
|
|
typedef struct _PDO_EXTENSION {
|
|
EXTENSION_COMMON_HEADER;
|
|
PDEVICE_EXTENSION Pext; // parent device extension
|
|
PIRP PendingPowerIrp;
|
|
PULONG IdleCounter;
|
|
} PDO_EXTENSION, *PPDO_EXTENSION;
|
|
|
|
typedef struct _TFFS_DEVICE_TYPE {
|
|
PCSTR DeviceTypeString;
|
|
PCSTR CompatibleIdString;
|
|
PCSTR PeripheralIdString;
|
|
} TFFS_DEVICE_TYPE, * PTFFS_DEVICE_TYPE;
|
|
|
|
typedef struct _FDO_POWER_CONTEXT {
|
|
POWER_STATE_TYPE PowerType;
|
|
POWER_STATE PowerState;
|
|
} FDO_POWER_CONTEXT, *PFDO_POWER_CONTEXT;
|
|
|
|
#define IS_FDO(devExtension) (devExtension->LowerDeviceObject != NULL)
|
|
|
|
typedef
|
|
VOID
|
|
(*PSTALL_ROUTINE) (
|
|
IN ULONG Delay
|
|
);
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PDUMP_DRIVER_OPEN) (
|
|
IN LARGE_INTEGER PartitionOffset
|
|
);
|
|
|
|
typedef
|
|
NTSTATUS
|
|
(*PDUMP_DRIVER_WRITE) (
|
|
IN PLARGE_INTEGER DiskByteOffset,
|
|
IN PMDL Mdl
|
|
);
|
|
|
|
|
|
typedef
|
|
VOID
|
|
(*PDUMP_DRIVER_FINISH) (
|
|
VOID
|
|
);
|
|
|
|
struct _ADAPTER_OBJECT;
|
|
|
|
//
|
|
// This is the information passed from the system to the disk dump driver
|
|
// during the driver's initialization.
|
|
//
|
|
|
|
typedef struct _INITIALIZATION_CONTEXT {
|
|
ULONG Length;
|
|
ULONG DiskSignature;
|
|
PVOID MemoryBlock;
|
|
PVOID CommonBuffer[2];
|
|
PHYSICAL_ADDRESS PhysicalAddress[2];
|
|
PSTALL_ROUTINE StallRoutine;
|
|
PDUMP_DRIVER_OPEN OpenRoutine;
|
|
PDUMP_DRIVER_WRITE WriteRoutine;
|
|
PDUMP_DRIVER_FINISH FinishRoutine;
|
|
struct _ADAPTER_OBJECT *AdapterObject;
|
|
PVOID MappedRegisterBase;
|
|
PVOID PortConfiguration;
|
|
BOOLEAN CrashDump;
|
|
ULONG MaximumTransferSize;
|
|
ULONG CommonBufferSize;
|
|
PVOID TargetAddress; //Opaque pointer to target address structure
|
|
} INITIALIZATION_CONTEXT, *PINITIALIZATION_CONTEXT;
|
|
|
|
typedef struct _CRASHDUMP_INIT_DATA {
|
|
|
|
PDEVICE_EXTENSION cdFdoExtension;
|
|
|
|
} CRASHDUMP_INIT_DATA, *PCRASHDUMP_INIT_DATA;
|
|
|
|
typedef struct _CRASHDUMP_DATA {
|
|
PCRASHDUMP_INIT_DATA CrashInitData;
|
|
LARGE_INTEGER PartitionOffset;
|
|
PSTALL_ROUTINE StallRoutine;
|
|
SCSI_REQUEST_BLOCK Srb;
|
|
DEVICE_EXTENSION fdoExtension;
|
|
ULONG MaxBlockSize;
|
|
} CRASHDUMP_DATA, *PCRASHDUMP_DATA;
|
|
|
|
typedef struct _WMI_FLASH_DISK_INFO {
|
|
ULONG Number;
|
|
ULONG Address;
|
|
ULONG Size;
|
|
} WMI_FLASH_DISK_INFO, *PWMI_FLASH_DISK_INFO;
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsFetchKeyValue(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath,
|
|
IN PWSTR KeyName,
|
|
IN OUT ULONG* KeyValue
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsDetectRegistryValues(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsDetectDiskOnChip(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsTranslateAddress(
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN ULONG BusNumber,
|
|
IN PHYSICAL_ADDRESS StartAddress,
|
|
IN LONG Length,
|
|
IN OUT PULONG AddressSpace,
|
|
OUT PVOID *TranslatedAddress,
|
|
OUT PPHYSICAL_ADDRESS TranslatedMemoryAddress
|
|
);
|
|
|
|
VOID
|
|
TrueffsFreeTranslatedAddress(
|
|
IN PVOID TranslatedAddress,
|
|
IN LONG Length,
|
|
IN ULONG AddressSpace
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsAddDevice(
|
|
PDRIVER_OBJECT DriverObject,
|
|
PDEVICE_OBJECT Pdo
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsCreateDevObject(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT Pdo,
|
|
OUT PDEVICE_EXTENSION *FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsStartDevice(
|
|
IN PDEVICE_EXTENSION deviceExtension,
|
|
IN PCM_RESOURCE_LIST ResourceList,
|
|
IN BOOLEAN CheckResources
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsMountMedia(
|
|
IN PDEVICE_EXTENSION deviceExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsStopRemoveDevice(
|
|
PDEVICE_EXTENSION deviceExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsCreateSymblicLinks (
|
|
PDEVICE_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsDeleteSymblicLinks (
|
|
PDEVICE_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsDeviceControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsDispatchSystemControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsQueryProperty(
|
|
IN PDEVICE_EXTENSION deviceExtension,
|
|
IN PIRP QueryIrp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsScsiRequests(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsCreateClose(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsPnpDeviceControl(
|
|
PDEVICE_OBJECT DeviceObject,
|
|
PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsPowerControl(
|
|
PDEVICE_OBJECT DeviceObject,
|
|
PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
TrueffsUnload(
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
VOID
|
|
TrueffsStartIo (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
TrueffsThread(
|
|
PVOID Context
|
|
);
|
|
|
|
NTSTATUS
|
|
QueueIrpToThread(
|
|
IN OUT PIRP Irp,
|
|
IN OUT PDEVICE_EXTENSION deviceExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsTranslateSRBStatus(
|
|
ULONG status
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsDeviceQueryId (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp,
|
|
BOOLEAN Fdo
|
|
);
|
|
|
|
PWSTR
|
|
DeviceBuildBusId(
|
|
IN PDEVICE_EXTENSION deviceExtension,
|
|
BOOLEAN Fdo
|
|
);
|
|
|
|
PWSTR
|
|
DeviceBuildInstanceId(
|
|
IN PDEVICE_EXTENSION deviceExtension,
|
|
BOOLEAN Fdo
|
|
);
|
|
PWSTR
|
|
DeviceBuildCompatibleId(
|
|
IN PDEVICE_EXTENSION deviceExtension,
|
|
BOOLEAN Fdo
|
|
);
|
|
|
|
PWSTR
|
|
DeviceBuildHardwareId(
|
|
IN PDEVICE_EXTENSION deviceExtension,
|
|
BOOLEAN Fdo
|
|
);
|
|
|
|
VOID
|
|
CopyField(
|
|
IN PUCHAR Destination,
|
|
IN PUCHAR Source,
|
|
IN ULONG Count,
|
|
IN UCHAR Change
|
|
);
|
|
|
|
PCSTR
|
|
TrueffsGetDeviceTypeString (
|
|
IN ULONG DeviceType
|
|
);
|
|
|
|
PCSTR
|
|
TrueffsGetCompatibleIdString (
|
|
IN ULONG DeviceType
|
|
);
|
|
|
|
PCSTR
|
|
TrueffsGetPeripheralIdString (
|
|
IN ULONG DeviceType
|
|
);
|
|
|
|
PCSTR
|
|
TrueffsGetDeviceTypeStringFDO (
|
|
IN ULONG DeviceType
|
|
);
|
|
|
|
PCSTR
|
|
TrueffsGetCompatibleIdStringFDO (
|
|
IN ULONG DeviceType
|
|
);
|
|
|
|
PCSTR
|
|
TrueffsGetPeripheralIdStringFDO (
|
|
IN ULONG DeviceType
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsQueryDeviceRelations (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp,
|
|
BOOLEAN Fdo
|
|
);
|
|
|
|
BOOLEAN
|
|
TrueffsOkToDetectLegacy (
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsGetParameterFromServiceSubKey (
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PWSTR ParameterName,
|
|
IN ULONG ParameterType,
|
|
IN BOOLEAN Read,
|
|
OUT PVOID *ParameterValue,
|
|
IN ULONG ParameterValueWriteSize
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsRegQueryRoutine (
|
|
IN PWSTR ValueName,
|
|
IN ULONG ValueType,
|
|
IN PVOID ValueData,
|
|
IN ULONG ValueLength,
|
|
IN PVOID Context,
|
|
IN PVOID EntryContext
|
|
);
|
|
|
|
HANDLE
|
|
TrueffsOpenServiceSubKey (
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING SubKeyPath
|
|
);
|
|
|
|
VOID
|
|
TrueffsCloseServiceSubKey (
|
|
IN HANDLE SubServiceKey
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsFindDiskOnChip(
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN ULONG BusNumber,
|
|
IN ULONG StartSearchAddress,
|
|
IN LONG WindowSize,
|
|
IN BOOLEAN StartSearch,
|
|
OUT PVOID *WindowBase
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsCheckDiskOnChip(
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN ULONG BusNumber,
|
|
IN ULONG StartSearchAddress,
|
|
IN LONG WindowSize,
|
|
OUT PVOID *WindowBase,
|
|
OUT PULONG AddressSpace
|
|
);
|
|
|
|
VOID
|
|
TrueffsResetDiskOnChip(
|
|
IN INTERFACE_TYPE InterfaceType,
|
|
IN ULONG BusNumber,
|
|
IN ULONG StartSearchAddress,
|
|
IN LONG WindowSize
|
|
);
|
|
|
|
PPDO_EXTENSION
|
|
AllocatePdo(
|
|
IN PDEVICE_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
FreePdo(
|
|
IN PDEVICE_OBJECT PhysicalDeviceObject
|
|
);
|
|
|
|
VOID
|
|
flBuildGeometry(dword capacity,
|
|
dword FAR2 *cylinders,
|
|
dword FAR2 *heads,
|
|
dword FAR2 *sectors,
|
|
FLBoolean oldFormat);
|
|
|
|
NTSTATUS
|
|
TrueffsSetPdoDevicePowerState( IN PDEVICE_OBJECT Pdo,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsSetPdoSystemPowerState (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsSetPdoPowerState(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsSetFdoPowerState (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsFdoDevicePowerIrpCompletionRoutine(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN UCHAR MinorFunction,
|
|
IN POWER_STATE PowerState,
|
|
IN PVOID contextIrp,
|
|
IN PIO_STATUS_BLOCK IoStatus
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsFdoPowerCompletionRoutine (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
TrueffsPdoCompletePowerIrp (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
TrueffsPdoRequestPowerCompletionRoutine(
|
|
IN PDEVICE_OBJECT Pdo,
|
|
IN UCHAR MinorFunction,
|
|
IN POWER_STATE PowerState,
|
|
IN PVOID Context,
|
|
IN PIO_STATUS_BLOCK IoStatus
|
|
);
|
|
NTSTATUS
|
|
TrueffsFdoChildRequestPowerUp (
|
|
IN PDEVICE_EXTENSION FdoExtension,
|
|
IN PPDO_EXTENSION PdoExtension,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsFdoChildRequestPowerUpCompletionRoutine (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN UCHAR MinorFunction,
|
|
IN POWER_STATE PowerState,
|
|
IN PVOID Context,
|
|
IN PIO_STATUS_BLOCK IoStatus
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsParentPowerUpCompletionRoutine(
|
|
IN PVOID Context,
|
|
IN NTSTATUS FdoStatus
|
|
);
|
|
|
|
VOID
|
|
TrueffsFdoChildReportPowerDown (
|
|
IN PDEVICE_EXTENSION FdoExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsDeviceQueryCapabilities(IN PDEVICE_EXTENSION deviceExtension,
|
|
IN PDEVICE_CAPABILITIES Capabilities
|
|
);
|
|
|
|
NTSTATUS
|
|
updateDocSocketParams(PDEVICE_EXTENSION fdoExtension);
|
|
|
|
NTSTATUS updatePcmciaSocketParams(PDEVICE_EXTENSION fdoExtension);
|
|
|
|
|
|
NTSTATUS
|
|
TrueffsSyncSendIrp (
|
|
IN PDEVICE_OBJECT TargetDeviceObject,
|
|
IN PIO_STACK_LOCATION IrpSp,
|
|
IN OUT OPTIONAL PIO_STATUS_BLOCK IoStatus
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsSyncSendIrpCompletionRoutine (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsCallDriverSync(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN OUT PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsCallDriverSyncCompletion(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN PVOID Context
|
|
);
|
|
|
|
ULONG
|
|
TrueffsCrashDumpDriverEntry (
|
|
PVOID Context
|
|
);
|
|
|
|
BOOLEAN
|
|
TrueffsCrashDumpOpen (
|
|
IN LARGE_INTEGER PartitionOffset
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsCrashDumpWrite (
|
|
IN PLARGE_INTEGER DiskByteOffset,
|
|
IN PMDL Mdl
|
|
);
|
|
|
|
VOID
|
|
TrueffsCrashDumpFinish (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
TrueffsWmiInit (
|
|
VOID
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsWmiRegister(
|
|
PDEVICE_EXTENSION_HEADER DevExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsWmiDeregister(
|
|
PDEVICE_EXTENSION_HEADER DevExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsWmiSystemControl(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsQueryWmiDataBlock(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN ULONG GuidIndex,
|
|
IN ULONG InstanceIndex,
|
|
IN ULONG InstanceCount,
|
|
IN OUT PULONG InstanceLengthArray,
|
|
IN ULONG OutBufferSize,
|
|
OUT PUCHAR Buffer
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsQueryWmiRegInfo(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
OUT PULONG RegFlags,
|
|
OUT PUNICODE_STRING InstanceName,
|
|
OUT PUNICODE_STRING *RegistryPath,
|
|
OUT PUNICODE_STRING MofResourceName,
|
|
OUT PDEVICE_OBJECT *Pdo
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsSetWmiDataBlock(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN ULONG GuidIndex,
|
|
IN ULONG InstanceIndex,
|
|
IN ULONG BufferSize,
|
|
IN PUCHAR Buffer
|
|
);
|
|
|
|
NTSTATUS
|
|
TrueffsSetWmiDataItem(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp,
|
|
IN ULONG GuidIndex,
|
|
IN ULONG InstanceIndex,
|
|
IN ULONG DataItemId,
|
|
IN ULONG BufferSize,
|
|
IN PUCHAR Buffer
|
|
);
|
|
|
|
|
|
#if DBG
|
|
|
|
#define TffsDebugPrint(X) TrueffsDebugPrint X
|
|
|
|
#define TFFS_DEB_ALL 0x0000FFFF
|
|
#define TFFS_DEB_INFO 0x00000001
|
|
#define TFFS_DEB_WARN 0x00000002
|
|
#define TFFS_DEB_ERROR 0x00000004
|
|
|
|
VOID
|
|
TrueffsDebugPrint(ULONG DebugPrintLevel, PCHAR DebugMessage, ...);
|
|
|
|
#else
|
|
|
|
#define TffsDebugPrint(X)
|
|
|
|
#endif
|
|
|
|
#endif
|