windows-nt/Source/XPSP1/NT/sdktools/restools/rlt32/inc/iodll.h
2020-09-26 16:20:57 +08:00

366 lines
13 KiB
C

//+---------------------------------------------------------------------------
//
// 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_