mirror of
				https://github.com/FDOS/kernel.git
				synced 2025-10-30 02:44:11 +01:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@343 6ac86273-5f31-0410-b378-82cca8765d1b
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /****************************************************************/
 | |
| /*                                                              */
 | |
| /*                        xstructs.h                            */
 | |
| /*                                                              */
 | |
| /*                Extended DOS 7.0+ structures                  */
 | |
| /*                                                              */
 | |
| /****************************************************************/
 | |
| 
 | |
| #ifdef MAIN
 | |
| #ifdef VERSION_STRINGS
 | |
| static BYTE *XStructs_hRcsId =
 | |
|     "$Id$";
 | |
| #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 newmirroring;       /* 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
 | |
|                                  */
 | |
|       DWORD oldmirroring;       /* previous active FAT/mirroring state (as above) */
 | |
|       UDWORD reserved[2];
 | |
|     } setmirroring;
 | |
| 
 | |
|     struct {
 | |
|       DWORD newrootclst;        /* set new root directory cluster, -1 - get current */
 | |
|       DWORD oldrootclst;        /* get previous root directory cluster */
 | |
|       UDWORD reserved[2];
 | |
|     } setroot;
 | |
|   } xdff_f;
 | |
| };
 | |
| 
 | |
| COUNT DosGetExtFree(BYTE FAR * DriveString, struct xfreespace FAR * xfsp);
 |