Leaked source code of windows server 2003
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

#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