Source code of Windows XP (NT5)
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.

85 lines
1.7 KiB

  1. [
  2. uuid(14a8831c-bc82-11d2-8a64-0008c7457e5d),
  3. version(1.0),
  4. pointer_default(unique)
  5. ]
  6. interface ExtendedError
  7. {
  8. typedef struct tagEEAString
  9. {
  10. short nLength;
  11. [size_is(nLength)] byte *pString;
  12. } EEAString;
  13. typedef struct tagEEUString
  14. {
  15. short nLength;
  16. [size_is(nLength)] unsigned short *pString;
  17. } EEUString;
  18. typedef struct tagBinaryEEInfo
  19. {
  20. short nSize;
  21. [size_is(nSize)] unsigned char *pBlob;
  22. } BinaryEEInfo;
  23. typedef enum tagExtendedErrorParamTypesInternal
  24. {
  25. eeptiAnsiString = 1,
  26. eeptiUnicodeString,
  27. eeptiLongVal,
  28. eeptiShortVal,
  29. eeptiPointerVal,
  30. eeptiNone,
  31. eeptiBinary
  32. } ExtendedErrorParamTypesInternal;
  33. typedef struct tagParam
  34. {
  35. ExtendedErrorParamTypesInternal Type;
  36. [switch_type(short),switch_is(Type)] union {
  37. [case(1)] EEAString AnsiString;
  38. [case(2)] EEUString UnicodeString;
  39. [case(3)] long LVal;
  40. [case(4)] short IVal;
  41. [case(5)] __int64 PVal;
  42. [case(6)] ;
  43. [case(7)] BinaryEEInfo Blob;
  44. };
  45. } ExtendedErrorParam;
  46. typedef enum tagEEComputerNamePresent
  47. {
  48. eecnpPresent = 1,
  49. eecnpNotPresent
  50. } EEComputerNamePresent;
  51. typedef struct tagEEComputerName
  52. {
  53. EEComputerNamePresent Type;
  54. [switch_type(short),switch_is(Type)] union {
  55. [case(1)] EEUString Name;
  56. [case(2)] ;
  57. };
  58. } EEComputerName;
  59. typedef struct tagExtendedErrorInfo
  60. {
  61. struct tagExtendedErrorInfo * Next;
  62. EEComputerName ComputerName;
  63. unsigned long ProcessID;
  64. __int64 TimeStamp;
  65. unsigned long GeneratingComponent;
  66. unsigned long Status;
  67. unsigned short DetectionLocation;
  68. unsigned short Flags;
  69. short nLen;
  70. [size_is(nLen)] ExtendedErrorParam Params[];
  71. } ExtendedErrorInfo;
  72. typedef ExtendedErrorInfo *ExtendedErrorInfoPtr;
  73. } // End of interface ExtendedError