int _tmain(int argc, _TCHAR* argv[]) { GFXDllCreateObject = NULL; GFXDllReleaseObject = NULL; dwEax_setup = 0; dwEbx_setup = 0; dwEcx_setup = 0; dwEdx_setup = 0; bInit = false; bLoaded = false; pGFXAccess = NULL; hDLL = NULL; memset(loadPk2Filename, 0, MAX_PATH + 1); if(Initialize() == 0) { bool bOpened = Open("d:\\Documents\\seeroad\\SilkRoad_TestIn\\Media.pk2", "169841", 6); if(bOpened) { // test the gefilesize function with index -1 __asm pushad // first we need a dword pointer DWORD dwHigh = 0; LPDWORD pdwHigh = &dwHigh; // next we need the index DWORD index = 1; DWORD fsize = 0; FARPROC gfxgetfilesize = pGFXAccess->vtable->functions[35]; LPVOID ptr1 = pGFXAccess; __asm { push pdwHigh push index push ptr1 call gfxgetfilesize mov fsize, eax } cout << "GfxGetFileSize returned " << fsize << "." << endl; cout << "GfxGetFileSize high order" << dwHigh << "." << endl; __asm popad } } Deinitialize(); return 0; }