Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.7 KiB

  1. #ifndef _ATTR_H
  2. #define _ATTR_H
  3. #include "windows.h"
  4. #include "acFileAttr.h"
  5. #if DBG
  6. void LogMsgDbg(LPSTR pszFmt, ...);
  7. #define LogMsg LogMsgDbg
  8. #else
  9. #define LogMsg
  10. #endif // DBG
  11. struct tagFILEATTR;
  12. struct tagFILEATTRMGR;
  13. typedef struct tagFILEATTRVALUE {
  14. char* pszValue; // allocated
  15. DWORD dwFlags;
  16. DWORD dwValue; // in case it has a DWORD value
  17. WORD wValue[4]; // for Bin Ver cases
  18. WORD wMask[4]; // for mask Bin Ver cases
  19. } FILEATTRVALUE, *PFILEATTRVALUE;
  20. typedef struct tagVERSION_STRUCT {
  21. PSTR pszFile; // the name of the file
  22. UINT dwSize; // the size of the version structure
  23. PBYTE VersionBuffer; // the buffer filled by GetFileVersionInfo
  24. VS_FIXEDFILEINFO* FixedInfo;
  25. UINT FixedInfoSize;
  26. } VERSION_STRUCT, *PVERSION_STRUCT;
  27. typedef struct tagFILEATTRMGR {
  28. FILEATTRVALUE arrAttr[VTID_LASTID - 2];
  29. VERSION_STRUCT ver;
  30. BOOL bInitialized;
  31. } FILEATTRMGR, *PFILEATTRMGR;
  32. typedef BOOL (*PFNQUERYVALUE)(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  33. typedef int (*PFNBLOBTOSTRING)(BYTE* pBlob, char* pszOut);
  34. typedef int (*PFNDUMPTOBLOB)(DWORD dwId, PFILEATTRVALUE pFileAttr, BYTE* pBlob);
  35. #define ATTR_FLAG_AVAILABLE 0x00000001
  36. #define ATTR_FLAG_SELECTED 0x00000002
  37. typedef struct tagFILEATTR {
  38. DWORD dwId;
  39. char* pszDisplayName;
  40. char* pszNameXML;
  41. PFNQUERYVALUE QueryValue;
  42. PFNBLOBTOSTRING BlobToString;
  43. PFNDUMPTOBLOB DumpToBlob;
  44. } FILEATTR, *PFILEATTR;
  45. // query functions
  46. BOOL QueryFileSize(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  47. BOOL QueryModuleType(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  48. BOOL QueryBinFileVer(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  49. BOOL QueryBinProductVer(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  50. BOOL QueryFileDateHi(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  51. BOOL QueryFileDateLo(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  52. BOOL QueryFileVerOs(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  53. BOOL QueryFileVerType(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  54. BOOL QueryFileCheckSum(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  55. BOOL QueryFilePECheckSum(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  56. BOOL QueryCompanyName(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  57. BOOL QueryProductVersion(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  58. BOOL QueryProductName(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  59. BOOL QueryFileDescription(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  60. BOOL QueryFileVersion(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  61. BOOL QueryOriginalFileName(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  62. BOOL QueryInternalName(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  63. BOOL QueryLegalCopyright(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  64. BOOL Query16BitDescription(PFILEATTRMGR pMgr, PFILEATTRVALUE pFileAttr);
  65. // dumping to blob functions
  66. int DumpDWORD(DWORD dwId, PFILEATTRVALUE pFileAttr, BYTE* pBlob);
  67. int DumpBinVer(DWORD dwId, PFILEATTRVALUE pFileAttr, BYTE* pBlob);
  68. int DumpString(DWORD dwId, PFILEATTRVALUE pFileAttr, BYTE* pBlob);
  69. int DumpUpToBinVer(DWORD dwId, PFILEATTRVALUE pFileAttr, BYTE* pBlob);
  70. // blob to string functions:
  71. int BlobToStringDWORD(BYTE* pBlob, char* pszOut);
  72. int BlobToStringLong(BYTE* pBlob, char* pszOut);
  73. int BlobToStringBinVer(BYTE* pBlob, char* pszOut);
  74. int BlobToStringString(BYTE* pBlob, char* pszOut);
  75. int BlobToStringUpToBinVer(BYTE* pBlob, char* pszOut);
  76. #endif // _ATTR_H