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

116 lines
5.1 KiB
C

/*
* $Log: V:/Flite/archives/TrueFFS5/Src/BDDEFS.H_V $
*
* Rev 1.4 Jan 17 2002 23:00:00 oris
* Replace FLFlash record with a pointer to FLFlash record (TrueFFS now uses only SOCKETS number of FLFlash records).
* Removed SINGLE_BUFFER ifdef.
* Added partition parameter to setBusy.
*
* Rev 1.3 Mar 28 2001 05:59:22 oris
* copywrite dates.
* Added empty line at the end of the file
* left alligned all # directives
* Removed dismountLowLevel extern prototype
*
* Rev 1.2 Feb 18 2001 14:22:58 oris
* Removed driveHandle field from volume record.
*
* Rev 1.1 Feb 12 2001 12:51:08 oris
* Changed the mutex field to a pointer to support TrueFFS 5.0 mutex mechanism
*
* Rev 1.0 Feb 02 2001 12:04:16 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 BDDEFS_H
#define BDDEFS_H
#include "fltl.h"
#include "flsocket.h"
#include "flbuffer.h"
#include "stdcomp.h"
typedef struct {
char flags; /* See description in flreq.h */
unsigned sectorsPerCluster; /* Cluster size in sectors */
unsigned maxCluster; /* highest cluster no. */
unsigned bytesPerCluster; /* Bytes per cluster */
unsigned bootSectorNo; /* Sector no. of DOS boot sector */
unsigned firstFATSectorNo; /* Sector no. of 1st FAT */
unsigned secondFATSectorNo; /* Sector no. of 2nd FAT */
unsigned numberOfFATS; /* number of FAT copies */
unsigned sectorsPerFAT; /* Sectors per FAT copy */
unsigned rootDirectorySectorNo; /* Sector no. of root directory */
unsigned sectorsInRootDirectory; /* No. of sectors in root directory */
unsigned firstDataSectorNo; /* 1st cluster sector no. */
unsigned allocationRover; /* rover pointer for allocation */
#if FILES > 0
FLBuffer volBuffer; /* Define a sector buffer */
#endif
FLMutex* volExecInProgress;
FLFlash FAR2* flash; /* flash structure for low level operations */
TL tl; /* Translation layer methods */
FLSocket *socket; /* Pointer to socket */
#ifdef WRITE_PROTECTION
unsigned long password[2];
#endif
#ifdef WRITE_EXB_IMAGE
dword binaryLength; /* Actual binary area taken by the exb */
byte moduleNo; /* Currently written module */
#endif /* WRITE_EXB_IMAGE */
} Volume;
/* drive handle masks */
#if defined(FILES) && FILES > 0
typedef struct {
long currentPosition; /* current byte offset in file */
#define ownerDirCluster currentPosition /* 1st cluster of owner directory */
long fileSize; /* file size in bytes */
SectorNo directorySector; /* sector of directory containing file */
unsigned currentCluster; /* cluster of current position */
unsigned char directoryIndex; /* entry no. in directory sector */
unsigned char flags; /* See description below */
Volume * fileVol; /* Drive of file */
} File;
/* File flag definitions */
#define FILE_MODIFIED 4 /* File was modified */
#define FILE_IS_OPEN 8 /* File entry is used */
#define FILE_IS_DIRECTORY 0x10 /* File is a directory */
#define FILE_IS_ROOT_DIR 0x20 /* File is root directory */
#define FILE_READ_ONLY 0x40 /* Writes not allowed */
#define FILE_MUST_OPEN 0x80 /* Create file if not found */
#endif /* FILES > 0 */
/* #define buffer (vol.volBuffer) */
#define execInProgress (vol.volExecInProgress)
extern FLStatus dismountVolume(Volume vol);
extern FLBoolean initDone; /* Initialization already done */
extern Volume vols[VOLUMES];
extern FLStatus setBusy(Volume vol, FLBoolean state, byte partition);
const void FAR0 *findSector(Volume vol, SectorNo sectorNo);
FLStatus dismountFS(Volume vol,FLStatus status);
#if FILES>0
void initFS(void);
#endif
#endif