/*** unasm.h - Unassembler Private Definitions * * Copyright (c) 1996,1997 Microsoft Corporation * Author: Michael Tsang (MikeTs) * Created 09/05/96 * * MODIFICATION HISTORY */ #ifndef _UNASM_H #define _UNASM_H #ifdef _UNASM_LIB // // Constant definitions // #ifndef MODNAME #define MODNAME "UnAsm" #endif // Error codes #define ASLERR_NONE 0 #define ASLERR_OUT_OF_MEM -1 #define ASLERR_OPEN_FILE -2 #define ASLERR_SEEK_FILE -3 #define ASLERR_READ_FILE -4 #define ASLERR_GET_TABLE -5 #define ASLERR_CHECKSUM -6 #define ASLERR_INVALID_OPCODE -7 #define ASLERR_INTERNAL_ERROR -8 #define ASLERR_NAME_TOO_LONG -9 #define ASLERR_NSOBJ_NOT_FOUND -10 #define ASLERR_INVALID_NAME -11 #define ASLERR_INVALID_ARGTYPE -12 #define ASLERR_INVALID_OBJTYPE -13 #define ASLERR_NSOBJ_EXIST -14 // gdwfASL flags #define ASLF_UNASM 0x00000001 #define ASLF_GENASM 0x00000002 #define ASLF_GENSRC 0x00000004 // // Imported data // extern DWORD gdwfASL; extern PNSOBJ gpnsNameSpaceRoot; extern PNSOBJ gpnsCurrentScope; extern PNSOBJ gpnsCurrentOwner; extern PSZ gpszAMLFile; extern PSZ gpszTabSig; #endif //ifdef _UNASM_LIB #ifndef MEMALLOC #define MEMALLOC malloc #endif #ifndef MEMFREE #define MEMFREE free #endif // // Type definitions // typedef int (*PFNPRINT)(PVOID, PSZ, ...); // // Local function prototypes // int LOCAL UnAsmHeader(PSZ pszAMLName, PDESCRIPTION_HEADER pdh, PFNPRINT pfnPrint, PVOID pv); VOID LOCAL DumpBytes(PBYTE pb, DWORD dwLen, PFNPRINT pfnPrint, PVOID pv); VOID LOCAL DumpCode(PBYTE pbOp, PFNPRINT pfnPrint, PVOID pv); VOID LOCAL PrintIndent(int iLevel, PFNPRINT pfnPrint, PVOID pv); BYTE LOCAL FindOpClass(BYTE bOp, POPMAP pOpTable); PASLTERM LOCAL FindOpTerm(DWORD dwOpcode); PASLTERM LOCAL FindKeywordTerm(char cKWGroup, BYTE bDate); int LOCAL UnAsmOpcode(PBYTE *ppbOp, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmDataObj(PBYTE *ppbOp, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmNameObj(PBYTE *ppbOp, PFNPRINT pfnPrint, PVOID pv, PNSOBJ *ppns, char c); int LOCAL ParseNameTail(PBYTE *ppbOp, PSZ pszBuff, int iLen); int LOCAL UnAsmTermObj(PASLTERM pterm, PBYTE *ppbOp, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmSuperName(PBYTE *ppbOp, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmArgs(PSZ pszUnAsmArgTypes, PSZ pszArgActions, DWORD dwTermData, PBYTE *ppbOp, PNSOBJ *ppns, PFNPRINT pfnPrint, PVOID pv); DWORD LOCAL ParsePackageLen(PBYTE *ppbOp, PBYTE *ppbOpNext); int LOCAL UnAsmDataList(PBYTE *ppbOp, PBYTE pbEnd, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmPkgList(PBYTE *ppbOp, PBYTE pbEnd, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmFieldList(PBYTE *ppbOp, PBYTE pbEnd, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmField(PBYTE *ppbOp, PFNPRINT pfnPrint, PVOID pv, PDWORD pdwBitPos); int LOCAL CreateObject(PTOKEN ptoken, PSZ pszName, char c, PNSOBJ *ppns); int LOCAL CreateScopeObj(PSZ pszName, PNSOBJ *ppns); BYTE LOCAL ComputeDataChkSum(PBYTE pb, DWORD dwLen); // // Exported function prototypes // int LOCAL UnAsmFile(PSZ pszAMLName, PFNPRINT pfnPrint, PVOID pv); int LOCAL BuildNameSpace(PSZ pszAMLName, DWORD dwAddr, PBYTE pb); int LOCAL UnAsmAML(PSZ pszAMLName, DWORD dwAddr, PBYTE pb, PFNPRINT pfnPrint, PVOID pv); int LOCAL UnAsmScope(PBYTE *ppbOp, PBYTE pbEnd, PFNPRINT pfnPrint, PVOID pv); #endif //ifndef _UNASM_H