//+--------------------------------------------------------------------------- // // File: iodll.h // // Contents: Declarations for the I/O API Layer DLL // // Classes: none // // History: 27-May-93 alessanm created // //---------------------------------------------------------------------------- #ifndef _IODLL_H_ #define _IODLL_H_ ////////////////////////////////////////////////////////////////////////////// // Type declaration, common to all the module in the Reader/Writer ////////////////////////////////////////////////////////////////////////////// #define DllExport typedef unsigned char * LPUCHAR; typedef void * LPVOID; #define LAST_WRN 100 // last valid value for warning typedef enum Errors { ERROR_NO_ERROR = 0, // Warning have values smaller than LAST_WRN ERROR_RW_NO_RESOURCES = 1, ERROR_RW_VXD_MSGPAGE = 2, ERROR_IO_CHECKSUM_MISMATCH = 3, ERROR_FILE_CUSTOMRES = 4, ERROR_FILE_VERSTAMPONLY = 5, ERROR_RET_RESIZED = 6, ERROR_RET_ID_NOTFOUND = 7, ERROR_RET_CNTX_CHANGED = 8, ERROR_RET_INVALID_TOKEN = 9, ERROR_RET_TOKEN_REMOVED = 10, ERROR_RET_TOKEN_MISMATCH = 11, // Errors will have positive values ERROR_HANDLE_INVALID = LAST_WRN + 1, ERROR_READING_INI = LAST_WRN + 2, ERROR_NEW_FAILED = LAST_WRN + 3, ERROR_OUT_OF_DISKSPACE = LAST_WRN + 4, ERROR_FILE_OPEN = LAST_WRN + 5, ERROR_FILE_CREATE = LAST_WRN + 6, ERROR_FILE_INVALID_OFFSET = LAST_WRN + 7, ERROR_FILE_READ = LAST_WRN + 8, ERROR_FILE_WRITE = LAST_WRN + 9, ERROR_DLL_LOAD = LAST_WRN + 10, ERROR_DLL_PROC_ADDRESS = LAST_WRN + 11, ERROR_RW_LOADIMAGE = LAST_WRN + 12, ERROR_RW_PARSEIMAGE = LAST_WRN + 13, ERROR_RW_GETIMAGE = LAST_WRN + 14, ERROR_RW_NOTREADY = LAST_WRN + 15, ERROR_RW_BUFFER_TOO_SMALL = LAST_WRN + 16, ERROR_RW_INVALID_FILE = LAST_WRN + 17, ERROR_RW_IMAGE_TOO_BIG = LAST_WRN + 18, ERROR_RW_TOO_MANY_LEVELS = LAST_WRN + 19, ERROR_IO_INVALIDITEM = LAST_WRN + 20, ERROR_IO_INVALIDID = LAST_WRN + 21, ERROR_IO_INVALID_DLL = LAST_WRN + 22, ERROR_IO_TYPE_NOT_SUPPORTED = LAST_WRN + 23, ERROR_IO_INVALIDMODULE = LAST_WRN + 24, ERROR_IO_RESINFO_NULL = LAST_WRN + 25, ERROR_IO_UPDATEIMAGE = LAST_WRN + 26, ERROR_IO_FILE_NOT_SUPPORTED = LAST_WRN + 27, ERROR_FILE_SYMPATH_NOT_FOUND = LAST_WRN + 28, ERROR_FILE_MULTILANG = LAST_WRN + 29, ERROR_IO_SYMBOLFILE_NOT_FOUND = LAST_WRN + 30, ERROR_RES_NOT_FOUND = LAST_WRN + 31 }; #define LAST_ERROR 200 // last valid value for IODLL error. System error get passed as LAST_ERROR+syserr #define IODLL_LAST_ERROR LAST_ERROR // last valid value for IODLL error. System error get passed as LAST_ERROR+syserr typedef enum ResourceType { RS_ALL = 0, RS_CURSORS = 1, RS_BITMAPS = 2 , RS_ICONS = 3, RS_MENUS = 4, RS_DIALOGS = 5, RS_STRINGS = 6, RS_FONTDIRS= 7, RS_FONTS = 8, RS_ACCELERATORS = 9, RS_RCDATA = 10, RS_ERRTABLES = 11, RS_GROUP_CURSORS = 12, RS_GROUP_ICONS = 14, RS_NAMETABLES = 15, RS_VERSIONS = 16, RS_CUSTOMS = 100 } RESTYPES; typedef struct _ResItem { DWORD dwSize; // Size of the buffer to hold the structure WORD wX; // POSITION WORD wY; WORD wcX; // SIZE WORD wcY; DWORD dwCheckSum; // Checksum for bitmap DWORD dwStyle; // Styles DWORD dwExtStyle; // Extended style DWORD dwFlags; // Menu flags DWORD dwItemID; // Item Identifier DWORD dwResID; // Resource identifier (if ordinal) DWORD dwTypeID; // Type identifier (if Ordinal) DWORD dwLanguage; // Language identifier DWORD dwCodePage; // Code page WORD wClassName; // Class name (if ordinal) WORD wPointSize; // Point Size WORD wWeight; // Weight BYTE bItalic; // Italic BYTE bCharSet; // Charset LPSTR lpszClassName; // Class name (if string) LPSTR lpszFaceName; // Face Name LPSTR lpszCaption; // Caption LPSTR lpszResID; // Resource identifier (if string) LPSTR lpszTypeID; // Type identifier (if string) } RESITEM, * PRESITEM, FAR * LPRESITEM; typedef struct _Settings { UINT cp; BOOL bAppend; // Append resource to win32 files BOOL bUpdOtherResLang; //update language info of res. not specified. char szDefChar[2]; } SETTINGS, * LPSETTINGS; //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Module Opening/Closing API //-------------------------------------------------------------------------------------------- extern "C" DllExport HANDLE APIENTRY RSOpenModule( LPCSTR lpszSrcfilename, // File name of the executable to use as source file LPCSTR lpszfiletype ); // Type of the executable file if known extern "C" DllExport HANDLE APIENTRY RSOpenModuleEx( LPCSTR lpszSrcfilename, // File name of the executable to use as source file LPCSTR lpszfiletype, // Type of the executable file if known LPCSTR lpszRDFfile, // Resource Description File (RDF) DWORD dwFlags ); // Flags to be passed to the RW to specify particular behaviour // LOWORD is for iodll while HIWORD if for RW extern "C" DllExport UINT APIENTRY RSCloseModule( HANDLE hResFileModule ); // Handle to the session opened before extern "C" DllExport HANDLE APIENTRY RSHandleFromName( LPCSTR lpszfilename ); // Handle to the session with the file name specified //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Enumeration API //-------------------------------------------------------------------------------------------- extern "C" DllExport LPCSTR APIENTRY RSEnumResType( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszPrevResType); // Previously enumerated type extern "C" DllExport LPCSTR APIENTRY RSEnumResId( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszResType, // Previously enumerated type LPCSTR lpszPrevResId); // Previously enumerated id extern "C" DllExport DWORD APIENTRY RSEnumResLang( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszResType, // Previously enumerated type LPCSTR lpszResId, // Previously enumerated id DWORD dwPrevResLang); // Previously enumerated language extern "C" DllExport DWORD APIENTRY RSEnumResItemId( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszResType, // Previously enumerated type LPCSTR lpszResId, // Previously enumerated id DWORD dwResLang, // Previously enumerated language DWORD dwPrevResItemId); // Previously enumerated item id //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Data acquisition API //-------------------------------------------------------------------------------------------- extern "C" DllExport UINT APIENTRY RSGetResItemData( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszResType, // Previously enumerated type LPCSTR lpszResId, // Previously enumerated id DWORD dwResLang, // Previously enumerated language DWORD dwResItemId, // Previously enumerated item id LPVOID lpbuffer, // Pointer to the buffer that will get the resource info UINT uiBufSize); // Size of the buffer that will hold the resource info extern "C" DllExport DWORD APIENTRY RSGetResImage( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszResType, // Previously enumerated type LPCSTR lpszResId, // Previously enumerated id DWORD dwResLang, // Previously enumerated language LPVOID lpbuffer, // Pointer to the buffer to get the resource Data DWORD dwBufSize); // Size of the allocated buffer //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Update API //-------------------------------------------------------------------------------------------- extern "C" DllExport UINT APIENTRY RSUpdateResItemData( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszResType, // Previously enumerated type LPCSTR lpszResId, // Previously enumerated id DWORD dwResLang, // Previously enumerated language DWORD dwResItemId, // Previously enumerated items id LPVOID lpbuffer, // Pointer to the buffer to the resource item Data UINT uiBufSize); // Size of the buffer extern "C" DllExport DWORD APIENTRY RSUpdateResImage( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszResType, // Previously enumerated type LPCSTR lpszResId, // Previously enumerated id DWORD dwResLang, // Previously enumerated language DWORD dwUpdLang, // Desired output language LPVOID lpbuffer, // Pointer to the buffer to the resource item Data DWORD dwBufSize); // Size of the buffer //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Conversion API //-------------------------------------------------------------------------------------------- extern "C" DllExport UINT APIENTRY RSUpdateFromResFile( HANDLE hResFileModule, // Handle to the file session LPSTR lpszResFilename); // The resource filename to be converted //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Writing API //-------------------------------------------------------------------------------------------- extern "C" DllExport UINT APIENTRY RSWriteResFile( HANDLE hResFileModule, // Handle to the file session LPCSTR lpszTgtfilename, // The new filename to be generated LPCSTR lpszTgtfileType, // Target Resource type 16/32 LPCSTR lpszSymbolPath); // Symbol path for updating symbol checksum extern "C" DllExport HANDLE APIENTRY RSCopyModule( HANDLE hSrcfilemodule, // Handle to the source file LPCSTR lpszModuleName, // Name of the new module filename LPCSTR lpszfiletype ); // Type of the target module //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Recognition API //-------------------------------------------------------------------------------------------- extern "C" DllExport UINT APIENTRY RSFileType( LPCSTR lpszfilename, // File name of the executable to use as source file LPSTR lpszfiletype ); // Type of the executable file if known extern "C" DllExport UINT APIENTRY RSLanguages( HANDLE hfilemodule, // Handle to the file LPSTR lpszLanguages ); // will be filled with a string of all the languages in the file //-------------------------------------------------------------------------------------------- //******************************************************************************************** // Global Settings API //-------------------------------------------------------------------------------------------- extern "C" DllExport UINT APIENTRY RSSetGlobals( SETTINGS settings); // Set the global variable, like CP to use. extern "C" DllExport UINT APIENTRY RSGetGlobals( LPSETTINGS lpSettings); // Retrieve the global variable #endif // _IODLL_H_