freeotfe.h
来自「文件驱动加密,功能强大,可产生加密分区,支持AES,MD2,MD4,MD5MD2」· C头文件 代码 · 共 784 行 · 第 1/2 页
H
784 行
IOCTL_Std_DiskIsWritable(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IOCTL_Std_DiskGetDriveGeometry(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IOCTL_Std_DiskGetDriveLayout(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
#if (VER_PRODUCTBUILD >= 2600)
// Windows XP and later only
NTSTATUS
IOCTL_Std_DiskGetDriveLayoutEx(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
#endif
#if (VER_PRODUCTBUILD >= 2600)
// Windows XP and later only
NTSTATUS
IOCTL_Std_DiskGetLengthInfo(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
#endif
NTSTATUS
IOCTL_Std_DiskGetPartitionInfo(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
#if (VER_PRODUCTBUILD >= 2600)
// Windows XP and later only
NTSTATUS
IOCTL_Std_DiskGetPartitionInfoEx(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
#endif
NTSTATUS
IOCTL_Std_DiskSetPartitionInfo(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IOCTL_Std_DiskSetPartitionInfoEx(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IOCTL_Std_DiskVerify(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IOCTL_Std_CheckVerify(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IOCTL_Std_MediaRemoval(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
IOCTL_Std_StorageEjectMedia(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PDEVICE_OBJECT *QueueDeviceObject
);
NTSTATUS
IOCTL_Std_CDROMReadTOC(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
GetDeviceDetailsHash(
IN char* deviceName,
IN GUID* supportGUID,
OUT MODULE_DETAILS_HASH* HashDetails
);
// Overwrite, free off and release everything that may have been
// created/obtained by a prior call to GetDeviceDetailsHash(...)
void
FreeDeviceDetailsHash(
OUT MODULE_DETAILS_HASH* HashDetails
);
NTSTATUS
GetDeviceDetailsCypher(
IN char* deviceName,
IN GUID* supportGUID,
OUT MODULE_DETAILS_CYPHER* CypherDetails
);
// Overwrite, free off and release everything that may have been
// created/obtained by a prior call to GetDeviceDetailsCypher(...)
void
FreeDeviceDetailsCypher(
OUT MODULE_DETAILS_CYPHER* CypherDetails
);
NTSTATUS
SynchCompletionRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PKEVENT Event
);
// Overwrite sensitive parts of the specified device's extension
NTSTATUS
OverwriteDeviceSensitive(
IN PDEVICE_OBJECT devObj
);
// Write/Read raw data to/from volume
// DoWrite - set to TRUE to write, FALSE to get
NTSTATUS
SetGetRawChar(
IN FREEOTFEBOOL DoWrite,
IN PCHAR Filename,
IN LARGE_INTEGER Offset,
IN ULONG DataLength,
IN OUT FREEOTFEBYTE* Data
);
// Write/Read raw data to/from volume
// DoWrite - set to TRUE to write, FALSE to get
NTSTATUS
SetGetRawUnicode(
IN FREEOTFEBOOL DoWrite,
IN PUNICODE_STRING Filename,
IN LARGE_INTEGER Offset,
IN ULONG DataLength,
IN OUT FREEOTFEBYTE* Data
);
// Determine the max size of a file
NTSTATUS
GetMaxSizeFile(
IN HANDLE FileHandle,
OUT PLARGE_INTEGER MaxSize
);
// Determine the max size of a partition
// DeviceName - The device name of the partition
// e.g. \Device\Harddisk1\Partition1
NTSTATUS
GetMaxSizePartition(
IN PUNICODE_STRING DeviceName,
OUT PLARGE_INTEGER MaxSize
);
NTSTATUS
GenerateMAC(
IN MAC_ALGORITHM MACAlgorithm,
IN CHAR HashDeviceName[FREEOTFE_MAX_FILENAME_LENGTH],
IN GUID HashGUID,
IN CHAR CypherDeviceName[FREEOTFE_MAX_FILENAME_LENGTH],
IN GUID CypherGUID,
IN int LengthWanted, // In bits
IN unsigned int KeyLength, // In bits
IN unsigned char* Key,
IN unsigned int DataLength, // In bits
IN unsigned char* Data,
IN OUT unsigned int* MACLength, // In bits
OUT unsigned char* MAC
);
NTSTATUS
DeriveKey(
IN KDF_ALGORITHM KDFAlgorithm,
IN CHAR HashDeviceName[FREEOTFE_MAX_FILENAME_LENGTH],
IN GUID HashGUID,
IN CHAR CypherDeviceName[FREEOTFE_MAX_FILENAME_LENGTH],
IN GUID CypherGUID,
IN int Iterations,
IN int LengthWanted,
IN unsigned int PasswordLength, // In bits
IN unsigned char* Password,
IN unsigned int SaltLength, // In bits
IN unsigned char* Salt,
IN OUT unsigned int* DerivedKeyLength, // In bits
OUT unsigned char* DerivedKey
);
// Perform an actual read from the encrypted volume
// This can be supplied with an arbitary Offset and BufferLength
NTSTATUS
ActualReadFile(
IN PDEVICE_OBJECT DeviceObject,
IN PLARGE_INTEGER Offset,
IN ULONG BufferLength,
IN FREEOTFEBYTE* Buffer
);
// Perform an actual write to the encrypted volume
// This can be supplied with an arbitary Offset and BufferLength
NTSTATUS
ActualWriteFile(
IN PDEVICE_OBJECT DeviceObject,
IN PLARGE_INTEGER Offset,
IN ULONG BufferLength,
OUT FREEOTFEBYTE* Buffer
);
#if (VER_PRODUCTBUILD >= 2600)
// Windows XP and later only
// Populate PARTITION_INFORMATION/PARTITION_INFORMATION_EX structures
NTSTATUS
PopulatePartitionInfo(
IN PDEVICE_OBJECT DeviceObject,
OUT PPARTITION_INFORMATION PartitionInfo,
OUT PPARTITION_INFORMATION_EX PartitionInfoEx
);
#else
// Populate PARTITION_INFORMATION/PARTITION_INFORMATION_EX structures
NTSTATUS
PopulatePartitionInfo(
IN PDEVICE_OBJECT DeviceObject,
OUT PPARTITION_INFORMATION PartitionInfo
);
#endif
// Identify if emulating a CD or DVD device
FREEOTFEBOOL
EmulatingCDOrDVD(
IN PDEVICE_OBJECT DeviceObject
);
NTSTATUS
ClientSecurityCreate(
OUT PSECURITY_CLIENT_CONTEXT *ClientContext // Pointer to a pointer
);
NTSTATUS
ClientSecurityDestroy(
IN OUT PSECURITY_CLIENT_CONTEXT *ClientContext // Pointer to a pointer
);
NTSTATUS
FileOpen(
IN PUNICODE_STRING Filename,
IN PSECURITY_CLIENT_CONTEXT ClientContext,
IN FREEOTFEBOOL ReadOnly,
IN FREEOTFEBOOL IntermediateBufferingOK,
OUT PHANDLE FileHandle,
OUT PIO_STATUS_BLOCK IoStatusBlock,
OUT PBOOLEAN GotFileAttributes,
OUT PFILE_BASIC_INFORMATION FileAttributes
);
NTSTATUS
FileClose(
IN OUT PHANDLE FileHandle,
IN FREEOTFEBOOL AttributesStored,
IN PFILE_BASIC_INFORMATION FileAttributes,
OUT PIO_STATUS_BLOCK IoStatusBlock
);
NTSTATUS
LDREUChar(
IN PDEVICE_OBJECT DeviceObject,
IN CHAR DriveFile[FREEOTFE_MAX_FILENAME_LENGTH],
IN CHAR DeviceName[FREEOTFE_MAX_FILENAME_LENGTH],
IN BOOLEAN Emergency
);
NTSTATUS
LDREUUnicode(
IN PDEVICE_OBJECT DeviceObject,
IN PUNICODE_STRING DriveFile,
IN CHAR DeviceNameAnsi[FREEOTFE_MAX_FILENAME_LENGTH], // ANSI version
IN PUNICODE_STRING DeviceName,
IN BOOLEAN Emergency
);
NTSTATUS
SendFOTFEDiskDeviceDIOCChar(
IN PDEVICE_OBJECT DeviceObject,
IN char* TgtDeviceName,
IN ULONG ControlCode,
IN ULONG InBufferSize,
IN void* InBuffer
);
NTSTATUS
SendFOTFEDiskDeviceDIOCUnicode(
IN PDEVICE_OBJECT DeviceObject,
IN PUNICODE_STRING TgtDeviceName,
IN ULONG ControlCode,
IN ULONG InBufferSize,
IN void* InBuffer
);
NTSTATUS
AllocateUnicodeString(
IN CHAR* ansiString,
OUT PUNICODE_STRING* pUNICODEString
);
VOID
FreeUnicodeString(
PUNICODE_STRING ptrUNICODEString
);
NTSTATUS
CreateSymlink(
IN CHAR Filename[FREEOTFE_MAX_FILENAME_LENGTH],
IN PUNICODE_STRING LinkName
);
NTSTATUS
AllocateDOSDeviceSymlinkTargetName_CharMountpoint(
IN char* Mountpoint,
IN BOOLEAN Global,
OUT PUNICODE_STRING* SymLinkName
);
NTSTATUS
AllocateDOSDeviceSymlinkTargetName_WCHARDriveLetter(
IN WCHAR DriveLetter,
IN BOOLEAN Global,
OUT PUNICODE_STRING* SymLinkName
);
VOID
FreeDOSDeviceSymlinkTargetName(
PUNICODE_STRING SymLinkName
);
// This function is for testing new functionality ONLY
NTSTATUS TestCode();
// =========================================================================
// =========================================================================
// =========================================================================
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?