windows-nt/Source/XPSP1/NT/drivers/storage/tffsport/flreq.h
2020-09-26 16:20:57 +08:00

144 lines
7.2 KiB
C

/*
* $Log: V:/Flite/archives/TrueFFS5/Src/FLREQ.H_V $
*
* Rev 1.3 Jan 29 2002 20:09:12 oris
* Changed LOW_LEVEL compilation flag with FL_LOW_LEVEL to prevent definition clashes.
*
* Rev 1.2 Apr 01 2001 07:46:16 oris
* Updated copywrite notice
*
* Rev 1.1 Feb 18 2001 12:07:24 oris
* Added VOLUME_ACCUPIED volume flag.
*
* Rev 1.0 Feb 04 2001 11:42:12 oris
* Initial revision.
*
*/
/***********************************************************************************/
/* M-Systems Confidential */
/* Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2001 */
/* 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 */
/***********************************************************************************/
#ifndef FLREQ_H
#define FLREQ_H
#include "flbase.h"
#define VOLUME_LOW_LVL_MOUNTED 1 /* Volume is mounted for low level operations */
#define VOLUME_MOUNTED 2 /* Volume is mounted */
#define VOLUME_12BIT_FAT 4 /* Volume uses 12-bit FAT */
#define VOLUME_ABS_MOUNTED 8 /* Volume is mounted for abs calls */
#define VOLUME_WRITE_PROTECTED 16 /* Volume is write protected */
#define VOLUME_ACCUPIED 32 /* Volume record bellongs to a volume */
typedef unsigned FLHandle; /* Handle of an open file or drive. */
/* Actually an index to file table or */
/* drive table. */
/*----------------------------------------------------------------------*/
/* P a t h - N a m e s */
/* */
/* A path-name is represented as an array of SimplePath records. */
/* Each SimplePath record holds a directory or file name segment, with */
/* the full 8.3 (spaces not compressed) name. */
/* */
/* Path-names always start at the root directory. There is no current */
/* directory. The directories pointers '.' and '..' can be specified */
/* as the 'name' part of the path-segment, except at the root-directory.*/
/* */
/* Lower-case letters are different from upper-case. To be compatible */
/* with DOS, file-names should be upper-case. File names may contain */
/* any character, but files starting with hex E5 are considered deleted */
/* according to DOS convention. */
/* */
/* A null (hex 0) in the first byte of the name field denotes that the */
/* path ends here. */
/* */
/* Note that paths can be specified as strings: For example: */
/* */
/* "UTIL FATLITE H " ===> "\UTIL\FATLITE.H". */
/* "" ===> "\" (root directory) */
/* "AUTOEXECBAT" ===> "\AUTOEXEC.BAT" */
/* "UTIL .. " ===> "\UTIL\.." (root directory) */
/* */
/* The optional service flParsePath may be used to convert regular */
/* string paths to this format. */
/*----------------------------------------------------------------------*/
typedef struct {
char name[8]; /* name part of path segment */
/* A hex 0 in 1st character indicates end of path */
char ext[3]; /* extension part of path segment */
} FLSimplePath;
/*----------------------------------------------------------------------*/
/* I O r e q */
/* */
/* IOreq is a common structure passed to all file-system functions. */
/* Refer to the description of individual functions for specific usage */
/* of fields. Some fields have different names when used by different */
/* functions, hence the use of unions. */
/* */
/*----------------------------------------------------------------------*/
typedef struct {
FLHandle irHandle; /* Handle of file or drive for operation*/
unsigned irFlags; /* function-specific flags */
FLSimplePath FAR1 * irPath; /* path of file for operation */
void FAR1 * irData; /* Pointer to user-buffer for operation */
long irLength; /* No. of bytes, size or position for */
/* operation */
#if defined(ABS_READ_WRITE) || defined(FL_LOW_LEVEL)
long irCount; /* Count or offset for operaion */
#endif
} IOreq;
/* definiftions for absolute read & write */
#define irSectorCount irCount
#define irSectorNo irLength
/* definitions for physical read & write */
#define irByteCount irCount
#define irAddress irLength
/* definitions for physical erase */
#define irUnitCount irCount
#define irUnitNo irLength
/* definitions for writing exb file */
#define irWindowBase irCount
/*----------------------------------------------------------------------*/
/* f l I n i t */
/* */
/* Initializes the FLite system. */
/* */
/* Calling this function is optional. If it is not called, */
/* initialization will be done automatically on the first FLite call. */
/* This function is provided for those applications who want to */
/* explicitly initialize the system and get an initialization status. */
/* */
/* Calling flInit after initialization was done has no effect. */
/* */
/* Parameters: */
/* None */
/* */
/* Returns: */
/* FLStatus : 0 on success, otherwise failed */
/*----------------------------------------------------------------------*/
extern FLStatus flInit(void);
#endif