#include "stdafx.h" #include "Winphone7_Lib.h" #include "clsReadEDB.h" #include <iosfwd> #define EDB extern "C" { #include <windbase_edb.h> } // clsReadEDB IMPLEMENT_DYNAMIC(clsReadEDB, CWnd) clsReadEDB::clsReadEDB() { } void clsReadEDB::readFile(char* path) { CEGUID guid; CEVOLUMEOPTIONS cevo = {0}; cevo.wVersion = 1; CEOIDINFOEX oidInfo = {0}; wchar_t buff[250]; HANDLE hSes, hBD, hBDS; BOOL rez; rez = CeMountDBVolEx(&guid, L"store.vol", &cevo,OPEN_EXISTING); if (rez == FALSE) { } DWORD dw = GetLastError(); hBD = CeFindFirstDatabaseEx(&guid, 0); if (hBD != INVALID_HANDLE_VALUE) { oidInfo.wVersion = CEOIDINFOEX_VERSION; oidInfo.wObjType = OBJTYPE_DATABASE; //creare sesiune hSes = CeCreateSession(&guid); if (hSes == INVALID_HANDLE_VALUE) {/* error */} CEOID oidBD = CeFindNextDatabaseEx(hBD, &guid); while (oidBD != 0) { //obtain database information rez = CeOidGetInfoEx2(&guid, oidBD, &oidInfo); if (rez != TRUE) {/* error */} //open database hBDS = CeOpenDatabaseInSession(hSes, &guid, &oidBD, oidInfo.infDatabase.szDbaseName, NULL, CEDB_AUTOINCREMENT, NULL); if (hBDS == INVALID_HANDLE_VALUE) {/* error */} PCEPROPVAL pInreg = NULL; PBYTE pBuffInreg = NULL;//memory is allocated by function WORD wProp;//number of properties DWORD dwLgInreg;// record lengths //memory is allocatd by function CEOID ceoid = CeReadRecordPropsEx(hBDS, CEDB_ALLOWREALLOC, &wProp, NULL, &(LPBYTE)pBuffInreg, &dwLgInreg, NULL); int k = 0; while(ceoid != 0) { pInreg = (PCEPROPVAL)pBuffInreg; //for each field for (int i = 0; i < wProp; i++) { switch(LOWORD(pInreg->propid)) { case CEVT_LPWSTR: //process string values break; //integers case CEVT_I2: case CEVT_I4: case CEVT_UI2: case CEVT_UI4: case CEVT_BLOB: case CEVT_BOOL: //process integer values break; case CEVT_R8: //process floating point values break; default: //other types break; } OutputDebugString(buff); //next field pInreg++; } LocalFree(pBuffInreg); //next record ceoid = CeReadRecordPropsEx(hBDS, CEDB_ALLOWREALLOC, &wProp, NULL, &(LPBYTE)pBuffInreg, &dwLgInreg, NULL); k++; } CloseHandle(hBDS); //next database oidBD = CeFindNextDatabaseEx(hBD, &guid); } CloseHandle(hBD); CloseHandle(hSes); } CeUnmountDBVol(&guid); } clsReadEDB::~clsReadEDB() { }