Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

cbmfile.c

Go to the documentation of this file.
00001 /*
00002  *      This program is free software; you can redistribute it and/or
00003  *      modify it under the terms of the GNU General Public License
00004  *      as published by the Free Software Foundation; either version
00005  *      2 of the License, or (at your option) any later version.
00006  *
00007  *  Copyright 2004 Spiro Trikaliotis
00008 */
00009 
00019 #include <windows.h>
00020 
00022 #define DBG_USERMODE
00023 
00025 #define DBG_PROGNAME "OPENCBMVDD.DLL"
00026 
00027 #include "debug.h"
00028 
00029 #include "vdd.h"
00030 
00031 #include <stdlib.h>
00032 
00033 
00034 #define MAX_CBMFILE_VALUES 10
00035 
00036 static CBM_FILE CbmFile[MAX_CBMFILE_VALUES];
00037 static BOOL CbmfileValuesInitialized = FALSE;
00038 
00039 static void
00040 init_cbmfiles(void)
00041 {
00042     if (!CbmfileValuesInitialized)
00043     {
00044         int i;
00045 
00046         for (i = 0; i < MAX_CBMFILE_VALUES; i++)
00047         {
00048             CbmFile[i] = INVALID_HANDLE_VALUE;
00049         }
00050 
00051         CbmfileValuesInitialized = TRUE;
00052     }
00053 }
00054 
00055 CBM_FILE
00056 vdd_cbmfile_get(WORD a)
00057 {
00058     CBM_FILE ret;
00059 
00060     init_cbmfiles();
00061 
00062     if (a < MAX_CBMFILE_VALUES)
00063     {
00064         ret = CbmFile[a];
00065     }
00066     else
00067     {
00068         ret = INVALID_HANDLE_VALUE;
00069     }
00070 
00071     return ret;
00072 }
00073 
00074 WORD
00075 vdd_cbmfile_store(CBM_FILE cbmfile)
00076 {
00077     WORD i;
00078 
00079     init_cbmfiles();
00080 
00081     i = 0;
00082 
00083     while (i < MAX_CBMFILE_VALUES && CbmFile[i] != INVALID_HANDLE_VALUE)
00084     {
00085         i++;
00086     }
00087 
00088     if (i < MAX_CBMFILE_VALUES && CbmFile[i] == INVALID_HANDLE_VALUE)
00089     {
00090         CbmFile[i] = cbmfile; 
00091     }
00092     else
00093     {
00094         i = -1;
00095     }
00096 
00097     return i;
00098 }
00099 
00100 CBM_FILE
00101 vdd_cbmfile_delete(WORD a)
00102 {
00103     CBM_FILE cbmfile;
00104 
00105     init_cbmfiles();
00106 
00107     cbmfile = INVALID_HANDLE_VALUE;
00108 
00109     if (a < MAX_CBMFILE_VALUES)
00110     {
00111         if (CbmFile[a] != INVALID_HANDLE_VALUE)
00112         {
00113             cbmfile = CbmFile[a];
00114             CbmFile[a] = INVALID_HANDLE_VALUE;
00115         }
00116     }
00117 
00118     return cbmfile;
00119 }
00120 
00121 VOID
00122 vdd_cbmfile_closeall(VOID)
00123 {
00124     int i;
00125 
00126     init_cbmfiles();
00127 
00128     for (i=0; i < MAX_CBMFILE_VALUES; i++)
00129     {
00130         cbm_driver_close(CbmFile[i]);
00131         CbmFile[i] = INVALID_HANDLE_VALUE;
00132     }
00133 }

Generated on Sun Apr 30 18:45:44 2006 for opencbm by  doxygen 1.4.2