mirror of
				https://github.com/FDOS/kernel.git
				synced 2025-11-03 20:54:35 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************/
 | 
						|
/*                                                              */
 | 
						|
/*                        xstructs.h                            */
 | 
						|
/*                                                              */
 | 
						|
/*                Extended DOS 7.0+ structures                  */
 | 
						|
/*                                                              */
 | 
						|
/****************************************************************/
 | 
						|
 | 
						|
#ifdef MAIN
 | 
						|
#ifdef VERSION_STRINGS
 | 
						|
static BYTE *XStructs_hRcsId =
 | 
						|
    "$Id: xstructs.h 1457 2009-06-26 20:00:41Z bartoldeman $";
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
struct xdpbdata {
 | 
						|
  UWORD xdd_dpbsize;
 | 
						|
  struct dpb xdd_dpb;
 | 
						|
};
 | 
						|
 | 
						|
struct xfreespace {
 | 
						|
  UWORD xfs_datasize;           /* size of this structure                */
 | 
						|
  union {
 | 
						|
    UWORD requested;            /* requested structure version           */
 | 
						|
    UWORD actual;               /* actual structure version              */
 | 
						|
  } xfs_version;
 | 
						|
  ULONG xfs_clussize;           /* number of sectors per cluster         */
 | 
						|
  ULONG xfs_secsize;            /* number of bytes per sector            */
 | 
						|
  ULONG xfs_freeclusters;       /* number of available clusters          */
 | 
						|
  ULONG xfs_totalclusters;      /* total number of clusters on the drive */
 | 
						|
  ULONG xfs_freesectors;        /* number of physical sectors available  */
 | 
						|
  ULONG xfs_totalsectors;       /* total number of physical sectors      */
 | 
						|
  ULONG xfs_freeunits;          /* number of available allocation units  */
 | 
						|
  ULONG xfs_totalunits;         /* total allocation units                */
 | 
						|
  UBYTE xfs_reserved[8];
 | 
						|
};
 | 
						|
 | 
						|
struct xdpbforformat {
 | 
						|
  UWORD xdff_datasize;          /* size of this structure                */
 | 
						|
  union {
 | 
						|
    UWORD requested;            /* requested structure version           */
 | 
						|
    UWORD actual;               /* actual structure version              */
 | 
						|
  } xdff_version;
 | 
						|
  UDWORD xdff_function;         /* function number:
 | 
						|
                                   00h invalidate DPB counts
 | 
						|
                                   01h rebuild DPB from BPB
 | 
						|
                                   02h force media change
 | 
						|
                                   03h get/set active FAT number and mirroring
 | 
						|
                                   04h get/set root directory cluster number
 | 
						|
                                 */
 | 
						|
  union {
 | 
						|
    struct {
 | 
						|
      DWORD nfreeclst;          /* # free clusters
 | 
						|
                                   (-1 - unknown, 0 - don't change) */
 | 
						|
      DWORD cluster;            /* cluster # of first free          
 | 
						|
                                   (-1 - unknown, 0 - don't change) */
 | 
						|
      UDWORD reserved[2];
 | 
						|
    } setdpbcounts;
 | 
						|
 | 
						|
    struct {
 | 
						|
      UDWORD unknown;
 | 
						|
      bpb FAR *bpbp;
 | 
						|
      UDWORD reserved[2];
 | 
						|
    } rebuilddpb;
 | 
						|
 | 
						|
    struct {
 | 
						|
      DWORD new;                /* new active FAT/mirroring state, or -1 to get
 | 
						|
                                   bits 3-0: the 0-based FAT number of the active FAT
 | 
						|
                                   bits 6-4: reserved (0)
 | 
						|
                                   bit 7: do not mirror active FAT to inactive FATs
 | 
						|
                                   or:
 | 
						|
                                   set new root directory cluster, -1 - get current
 | 
						|
                                 */
 | 
						|
      DWORD old;                 /* previous active FAT/mirroring state (as above)
 | 
						|
                                    or
 | 
						|
                                    get previous root directory cluster
 | 
						|
                                 */
 | 
						|
      UDWORD reserved[2];
 | 
						|
    } setget;
 | 
						|
  } xdff_f;
 | 
						|
};
 | 
						|
 | 
						|
COUNT DosGetExtFree(BYTE FAR * DriveString, struct xfreespace FAR * xfsp);
 |