00001
00002
00003
00004
00005
00006
00007
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 }