📄 flioctl.h
字号:
/***********************************************************************************/
/* M-Systems Confidential */
/* Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2003 */
/* All Rights Reserved */
/***********************************************************************************/
/* NOTICE OF M-SYSTEMS OEM */
/* SOFTWARE LICENSE AGREEMENT */
/* */
/* THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE */
/* AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT */
/* FOR THE SPECIFIC TERMS AND CONDITIONS OF USE, */
/* OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE: */
/* E-MAIL = info@m-sys.com */
/***********************************************************************************/
/*
* $Log: V:/PVCSDB/DiskOnChip/archives/general storage/TrueFFS/src/include/flioctl.h-arc $
*
* Rev 1.3 Dec 09 2003 18:44:40 oris
* Fixed ARM Compiler error.
*
* Rev 1.2 May 11 2003 08:27:48 OriS
* Added support for the 3 quick mount routine (get, discard and write).
* FL_IOCTL_IS_QUICK_MOUNT_VALID
* FL_IOCTL_WRITE_QUICK_MOUNT_INFO
* FL_IOCTL_CLEAR_QUICK_MOUNT_INFO
*
* Rev 1.1 May 08 2003 23:16:06 OriS
* Added FL_IOCTL_IS_VOLUME_RUGGEDIZED ioctl.
*
* Rev 1.0 Apr 09 2003 12:16:00 OriS
* Initial revision.
*
*/
#ifndef FLIOCTL_H
#define FLIOCTL_H
#include "flbase.h"
#include "dosformt.h"
#include "blockdev.h"
#ifdef BDK_ACCESS
#include "docbdk.h"
#endif
#include "_flioctl.h"
#ifdef IOCTL_INTERFACE
/* In every call to flIOctl function, the irFlags field in the structure
IOreq should hold one of the following: */
typedef enum{FL_IOCTL_GET_INFO = FL_IOCTL_START,
FL_IOCTL_DEFRAGMENT,
FL_IOCTL_WRITE_PROTECT,
FL_IOCTL_MOUNT_VOLUME,
FL_IOCTL_FORMAT_VOLUME,
FL_IOCTL_BDK_OPERATION,
FL_IOCTL_DELETE_SECTORS,
FL_IOCTL_READ_SECTORS,
FL_IOCTL_WRITE_SECTORS,
FL_IOCTL_FORMAT_PHYSICAL_DRIVE,
FL_IOCTL_FORMAT_LOGICAL_DRIVE,
FL_IOCTL_BDTL_HW_PROTECTION,
FL_IOCTL_BINARY_HW_PROTECTION,
FL_IOCTL_OTP,
FL_IOCTL_CUSTOMER_ID,
FL_IOCTL_UNIQUE_ID,
FL_IOCTL_NUMBER_OF_PARTITIONS,
FL_IOCTL_INQUIRE_CAPABILITIES,
FL_IOCTL_SET_ENVIRONMENT_VARIABLES, /* No longer supported */
FL_IOCTL_PLACE_EXB_BY_BUFFER,
FL_IOCTL_WRITE_IPL, /* No longer supported */
FL_IOCTL_DEEP_POWER_DOWN_MODE,
FL_IOCTL_EXTENDED_ENVIRONMENT_VARIABLES,
FL_IOCTL_VERIFY_VOLUME,
FL_IOCTL_SET_ACCESS_ROUTINE,
FL_IOCTL_GET_ACCESS_ROUTINE,
FL_IOCTL_EXTENDED_WRITE_IPL,
FL_IOCTL_OPEN_TRANSACTION,
FL_IOCTL_COMMIT_TRANSACTION,
FL_IOCTL_IS_VOLUME_RUGGEDIZED,
FL_IOCTL_IS_QUICK_MOUNT_VALID,
FL_IOCTL_WRITE_QUICK_MOUNT_INFO,
FL_IOCTL_CLEAR_QUICK_MOUNT_INFO,
FL_IOCTL_COMPLETE_OPERATION
} flIOctlFunctionNo;
/* In every call to flIOctl function, the irData field in the structure
IOreq should point to the structure defined below. The fields
inputRecord and outputRecord should point to structures which are
specific to each IOctl function as defined in this file. */
typedef struct {
void FAR1 *inputRecord;
void FAR1 *outputRecord;
} flIOctlRecord;
/* General output record that returns only status. */
typedef struct {
FLStatus status;
} flOutputStatusRecord;
/* Input and output records for the different IOCTL functions: */
/* =========================================================== */
/* Get disk information (FL_IOCTL_GET_INFO) */
/* Input record: NULL */
/* Output record: */
typedef struct {
VolumeInfoRecord info; /* VolumeInfoRecord is defined in blockdev.h */
FLStatus status;
} flDiskInfoOutput;
/* Output record: flOutputStatusRecord */
/*************************************************************************/
#ifdef DEFRAGMENT_VOLUME
/* Defragment volume (FL_IOCTL_DEFRAGMENT) */
/* Input record: */
typedef struct {
FLSDword requiredNoOfSectors; /* Minimum number of sectors to make available.
if -1 then a quick garbage collection operation
is invoked. */
} flDefragInput;
/* Outout record: */
typedef struct {
FLSDword actualNoOfSectors; /* Actual number of sectors available */
FLStatus status;
} flDefragOutput;
#endif
/*************************************************************************/
#ifdef WRITE_PROTECTION
/* Write protection (FL_IOCTL_WRITE_PROTECT) */
/* Input record: */
typedef struct {
FLByte type; /* type of operation: FL_PROTECT\FL_UNPROTECT */
FLSDword password[2]; /* password */
} flWriteProtectInput;
/* Output record: flOutputStatusRecord */
#endif /* WRITE_PROTECTION */
/*************************************************************************/
/* Mount volume (FL_IOCTL_MOUNT_VOLUME) */
/* Input record: */
typedef struct {
FLByte type; /* type of operation: FL_MOUNT\FL_DISMOUNT */
} flMountInput;
#define FL_MOUNT 0
#define FL_DISMOUNT 1
/* Output record: flOutputStatusRecord */
/*************************************************************************/
#ifdef FORMAT_VOLUME
/* Format volume (FL_IOCTL_FORMAT_VOLUME) */
/* Input record: */
typedef struct {
FLByte formatType; /* type of format as defined in blockdev.h */
FormatParams fp; /* Format parameters structure (defined in flformat.h) */
} flFormatInput;
/* Output record: flOutputStatusRecord */
/*************************************************************************/
/* Format volume (FL_IOCTL_FORMAT_LOGICAL_DRIVE) */
/* Input record: */
typedef struct {
BDTLPartitionFormatParams fp; /* Format parameters structure (defined in flformat.h) */
} flFormatLogicalInput;
/* Output record: flOutputStatusRecord */
/*************************************************************************/
#ifdef FL_LOW_LEVEL
/* Format volume (FL_IOCTL_FORMAT_PHYSICAL_DRIVE) */
/* Input record: */
typedef struct {
FLByte formatType; /* type of format as defined in blockdev.h */
FormatParams2 fp; /* Format parameters structure (defined in flformat.h) */
} flFormatPhysicalInput;
/* Output record: flOutputStatusRecord */
#endif /* FL_LOW_LEVEL */
#endif /* FORMAT_VOLUME */
/*************************************************************************/
#ifdef BDK_ACCESS
/* BDK operations read\write\erase\create (FL_IOCTL_BDK_OPERATION) */
/* Input record: */
typedef struct {
FLByte type; /* type of operation: BDK_INIT_READ\BDK_READ\BDK_INIT_WRITE\ */
/* BDK_WRITE\BDK_ERASE\BDK_CREATE\BDK_GET_INFO */
BDKStruct bdkStruct; /* parameters for BDK operations (defined in docbdk.h) */
} flBDKOperationInput;
#define BDK_INIT_READ 0
#define BDK_READ 1
#define BDK_INIT_WRITE 2
#define BDK_WRITE 3
#define BDK_ERASE 4
#define BDK_CREATE 5
#define BDK_GET_INFO 6
/* Output record: flOutputStatusRecord */
#endif /* BDK_ACCESS */
/*************************************************************************/
#ifdef HW_PROTECTION
/* BDK and BDTL protection operations: (FL_IOCTL_BINARY_HW_PROTECTION) */
/* (FL_IOCTL_BDTL_HW_PROTECTION) */
/* insert key \ remove key \ identify \ change key \ */
/* change protection type \ change lock status */
/* Input record: */
typedef struct {
FLByte protectionType; /* see flflash.h for the protection attributes */
FLByte key[8]; /* The new key to the change Key call */
FLByte type; /* Operation type see list bellow */
} flProtectionInput;
#define PROTECTION_INSERT_KEY 0
#define PROTECTION_REMOVE_KEY 1
#define PROTECTION_GET_TYPE 2
#define PROTECTION_DISABLE_LOCK 3
#define PROTECTION_ENABLE_LOCK 4
#define PROTECTION_CHANGE_KEY 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -