#ifndef __SFBASICO_H #define __SFBASICO_H /* */ /* SFBASICO.H */ /* ========== */ /* */ /* Interfaz con el Sistema de Ficheros Básico */ /* */ /* Tipos básicos de las prácticas */ #include "tipos.h" /**************************/ /* Constantes y límites */ /**************************/ /* */ /* Según se tenga asignación de espacio contigua o no */ /* */ /* Si está definido CONTIGUO, el sistema de ficheros */ /* extendido puede tenerlo en cuenta a la hora de al- */ /* terar el tamaño de los ficheros */ /* */ #define NO_CONTIGUO /*#define CONTIGUO*/ /* Máximo número de bloques contiguos que se pueden */ /* solicitar para hacer crecer un fichero */ #define MAX_BLOQUES_CONTIGUOS 1 /* Máximo número de ficheros posible */ #define MAX_FICHEROS 20000 /******************/ /* Tipos de datos */ /******************/ /* Índice a fichero básico */ typedef unsigned short IFB; /****************************/ /* Servicios de este módulo */ /****************************/ /* Formateo y montaje de discos */ int FormateaSFB ( const char* nombre_fichero, WORD BF_reservados, WORD tam_DFE, WORD tam_bloque_datos, WORD num_ficheros ); int MontaSFB ( const char* nombre_fichero, int nbloques_cache ); int DesmontaSFB (void); /* Par metros del sistema */ WORD TamBloqueDatos(void); /* Creación y destrucción de ficheros */ IFB CreaFB ( WORD num_bloques ); int DestruyeFB ( IFB fichero ); /* Tamaño del fichero */ WORD LongitudFB ( IFB fichero ); int ExpandeFB ( IFB fichero, WORD num_bloques ); int TruncaFB ( IFB fichero, WORD num_bloques ); /* Lectura y escritura de bloques */ int LeeBloqueFB ( IFB fichero, WORD num_bloque, void* bufer ); int EscribeBloqueFB ( IFB fichero, WORD num_bloque, void* bufer ); /* Acceso al descriptor de fichero de extendido */ int LeeDFE ( IFB fichero, void* estructura ); int EscribeDFE ( IFB fichero, void* estructura ); /* Gestión elemental de los bloques de datos */ DWORD ReservaBloqueDatos (void); int LiberaBloqueDatos ( DWORD bloque ); /* Funciones sólo implementadas en asignaciones contiguas */ DWORD ReservaSegmentoDatos ( DWORD num_bloques ); int LiberaSegmentoDatos ( DWORD bloque_inicial, DWORD num_bloques ); #endif