home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / detk45he.zip / lfdef.h < prev    next >
Text File  |  1999-03-15  |  42KB  |  750 lines

  1. /********************** START OF HEADER SPECIFICATION ***********************/
  2.  
  3. /*                                                                          */
  4. /* FILE NAME:  LFDEF.H                                                      */
  5. /*                                                                          */
  6. /* FUNCTIONS:  This header file contains the data structures pertaining     */
  7. /*             to the Public Logging Framework APIs.                        */
  8. /*                                                                          */
  9. /* (C) COPYRIGHT International Business Machines Corp., 1994.               */
  10. /* All Rights Reserved                                                      */
  11. /* Licensed Materials - Property of IBM                                     */
  12. /*                                                                          */
  13. /* US Government Users Restricted Rights - Use, duplication or              */
  14. /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.        */
  15. /*                                                                          */
  16. /********************* END OF HEADER SPECIFICATION **************************/
  17. #ifndef _LFDEFH_
  18. #define _LFDEFH_
  19.  
  20. #include "Unidef.h"
  21.  
  22. #ifndef INCL_LOGGING
  23.   #define INCL_LOGGING
  24. #endif
  25.  
  26. #define ERROR_LOGGING_SERVICE                           1
  27. #define CURRENT_LOG_FILE_ID                             1
  28.  
  29. /*--------------------------------------------------------------------------*/
  30. /* Packet Revision numbers                                                  */
  31. /*--------------------------------------------------------------------------*/
  32. #define LF_UNI_API                                      2
  33. #define LF_ASCII_API                                    3
  34. #define WPOS_RELEASE_1                                  LF_UNI_API
  35. #define FROM_LOGDAEM_EXE                                4
  36. #define DET1_PACKET                                     2
  37. #define DET4_PACKET                                     4
  38.  
  39. /*--------------------------------------------------------------------------*/
  40. /* Error Log Record Types                                                   */
  41. /*--------------------------------------------------------------------------*/
  42. #define LF_DET1                                         0xD1D1D1D1
  43. #define LF_DET2                                         0xD2D2D2D2
  44. #define LF_DET4                                         0xD4D4D4D4
  45.  
  46. /*--------------------------------------------------------------------------*/
  47. /* Return Codes  :                                                          */
  48. /*--------------------------------------------------------------------------*/
  49. #ifndef NO_ERROR
  50.   #define NO_ERROR                                      0
  51. #endif
  52. #ifndef ERROR_FILE_NOT_FOUND
  53.   #define ERROR_FILE_NOT_FOUND                          2
  54. #endif
  55. #ifndef ERROR_PATH_NOT_FOUND
  56.   #define ERROR_PATH_NOT_FOUND                          3
  57. #endif
  58. #ifndef ERROR_ACCESS_DENIED
  59.   #define ERROR_ACCESS_DENIED                           5
  60. #endif
  61. #ifndef ERROR_INVALID_ACCESS
  62.   #define ERROR_INVALID_ACCESS                          12
  63. #endif
  64. #ifndef ERROR_SHARING_VIOLATION
  65.   #define ERROR_SHARING_VIOLATION                       32
  66. #endif
  67. #ifndef ERROR_DEVICE_IN_USE
  68.   #define ERROR_DEVICE_IN_USE                           99
  69. #endif
  70. #ifndef ERROR_DRIVE_LOCKED
  71.   #define ERROR_DRIVE_LOCKED                            108
  72. #endif
  73. #ifndef ERROR_OPEN_FAILED
  74.   #define ERROR_OPEN_FAILED                             110
  75. #endif
  76. #ifndef ERROR_LF_INVALID_REQUEST
  77.   #define ERROR_LF_INVALID_REQUEST                      517
  78. #endif
  79. #ifndef ERROR_LF_NOT_AVAIL
  80.   #define ERROR_LF_NOT_AVAIL                            518
  81. #endif
  82. #ifndef ERROR_LF_SUSPENDED
  83.   #define ERROR_LF_SUSPENDED                            519
  84. #endif
  85. #ifndef ERROR_LF_BUF_TOO_SMALL
  86.   #define ERROR_LF_BUF_TOO_SMALL                        520
  87. #endif
  88. #ifndef ERROR_LF_BUFFER_FULL
  89.   #define ERROR_LF_BUFFER_FULL                          521
  90. #endif
  91. #ifndef ERROR_LF_INVALID_RECORD
  92.   #define ERROR_LF_INVALID_RECORD                       522
  93. #endif
  94. #ifndef ERROR_LF_INVALID_SERVICE
  95.   #define ERROR_LF_INVALID_SERVICE                      523
  96. #endif
  97. #ifndef ERROR_LF_GENERAL_FAILURE
  98.   #define ERROR_LF_GENERAL_FAILURE                      524
  99. #endif
  100. #ifndef ERROR_LF_OUT_OF_STORAGE
  101.   #define ERROR_LF_OUT_OF_STORAGE                       528
  102. #endif
  103.  
  104. #define INVALID_LF_LOG_FILE_ID                          1701
  105. #define RAS_INVALID_LOG_FILE_ID                         1701
  106. #define INVALID_LF_PACKET_REVISION_NUMBER               1702
  107. #define INVALID_DATA_POINTER                            1703
  108. #define INVALID_LF_FILENAME_LENGTH                      1704
  109. #define RAS_INCORRECT_FILENAME_LENGTH                   1704
  110. #define INVALID_LF_FILENAME_PTR                         1705
  111. #define RAS_INVALID_FILENAME_PTR                        1705
  112. #define INVALID_LF_PARM_PACKET_PTR                      1706
  113. #define RAS_INVALID_PARM_PACKET_PTR                     1706
  114. #define INVALID_LF_ENTRY_ID                             1707
  115. #define INVALID_LF_LOG_RECORD_BUFFER_PTR                1709
  116. #define RAS_INVALID_LOGRECORD_BUFFER_PTR                1709
  117. #define INVALID_LF_LOG_BUFFER_TOO_SMALL                 1710
  118. #define INVALID_LF_STATIC_PACKET_PTR                    1711
  119. #define INVALID_LF_DYNAMIC_PACKET_PTR                   1712
  120. #define INVALID_LF_STATIC_REVISION_NUMBER               1713
  121. #define INVALID_LF_STATIC_PRODUCT_MFG_NAME              1714
  122. #define INVALID_LF_STATIC_PRODUCT_NAME                  1715
  123. #define INVALID_LF_STATIC_SUBPRODUCT_NAME               1716
  124. #define INVALID_LF_STATIC_MODULE_NAME                   1717
  125. #define INVALID_LF_STATIC_PROCESS_PATHNAME              1718
  126. #define INVALID_LF_DYNAMIC_REVISION_NUMBER              1719
  127. #define INVALID_LF_DYNAMIC_SEVERITY                     1720
  128. #define INVALID_LF_MSGINSDATA_NUM_INSERTS               1721
  129. #define INVALID_LF_MSGINSDATA_MSGNUM_MISMATCH           1722
  130. #define INVALID_LF_MSGINSDATA_MSG_TEXT_PTR              1723
  131. #define INVALID_LF_DYNAMIC_DUMP_FILENAME_PTR            1724
  132. #define INVALID_LF_DYNAMIC_DUMP_FORMATTER_PARMS_PTR     1725
  133. #define INVALID_LF_DYNAMIC_TRACE_FILENAME_PTR           1726
  134. #define INVALID_LF_DYNAMIC_TRACE_FORMATTER_PARMS_PTR    1727
  135. #define INVALID_LF_DYNAMIC_PROCESS_FILENAME_PTR         1728
  136. #define INVALID_LF_DYNAMIC_PROCESS_FORMATTER_PARMS_PTR  1729
  137. #define INVALID_LF_DYNAMIC_PCT_PARMS_PTR                1730
  138. #define INVALID_LF_DYNAMIC_USER_ENTRY_DATA_PTR          1731
  139. #define INVALID_LF_LOG_FILE                             1732
  140. #define RAS_INVALID_LOG_FILE                            1732
  141. #define FATAL_LF_ALL_LOG_FILES_INVALID                  1733
  142. #define INVALID_LF_LOG_RECORD_TOO_BIG                   1734
  143. #define RAS_QUERY_PIPEBUFFER_TOO_SMALL                  1735
  144. #define INVALID_LF_RECORD_TYPE                          1736
  145.  
  146. #define INVALID_LF_ATTRIBUTE_ID                         1740
  147. #define INVALID_LF_ATTR_BUFFER_TOO_SMALL                1741
  148. #define INVALID_LF_ATTR_BUFFER_PTR                      1742
  149.  
  150. #define INVALID_LF_AT_END_OF_LOG                        1750
  151. #define INVALID_LF_FLAG                                 1751
  152. #define RAS_INVALID_FLAG                                1751
  153. #define INVALID_LF_OPERATOR_ID                          1752
  154. #define ERROR_LF_ENTRY_NOT_FOUND                        1753
  155. #define INVALID_LF_UPDATE_COUNT                         1754
  156. #define INVALID_LF_FIELD_HAS_DATA                       1755
  157. #define INVALID_LF_SUBBLOCK_DATA_LENGTH                 1756
  158. #define INVALID_LF_LOG_NOTIFY_PTR                       1757
  159. #define RAS_INVALID_LOG_NOTIFY_PTR                      1757
  160. #define INVALID_LF_LOG_NOTIFY_ID                        1758
  161. #define RAS_INVALID_LOG_NOTIFY_ID                       1758
  162. #define INVALID_LF_ENTRY_KEY                            1759
  163.  
  164. #define STATE_SUM_BUFFER_2_SMALL                        1760
  165. #define ERROR_LF_INVALID_PACKET_SIZE                    1761
  166. #define RAS_INVALID_PACKET_SIZE                         1761
  167. #define ERROR_LF_NO_NOTIFICATION_ENTRIES                1762
  168.  
  169. #define ERROR_LF_DECREASE_TOO_MUCH                      1765
  170. #define ERROR_LF_FILTER_LOOP                            1766
  171. #define INVALID_LOG_ENTRY_RECORD                        1770
  172. #define NO_LOG_ENTRY_FORMAT_TEMPLATE_AVAILABLE          1771
  173. #define ERROR_LF_TIMEOUT                                2055
  174. #define ERROR_LF_REDIRECT_FAILURE                       2060
  175.  
  176. #define ERROR_LF_DOSLOADMODULE_ERROR                    1798
  177. #define ERROR_LF_DOSQUERYPROCADDR_ERROR                 1799
  178.  
  179. #define LF_INVALID_FILE_HANDLE                          2002
  180. #define RAS_INVALID_FILE_HANDLE                         2002
  181.  
  182. #define RAS_EVENT_SEM_FAILURE                           2500
  183. #define RAS_QUEUE_FAILURE                               2501
  184. #define RAS_INTERNAL_MEMORY_FAILURE                     2502
  185. #define RAS_NOTIF_ENTRY_NOT_FOUND                       2503
  186. #define RAS_NOTIF_ENTRY_DELETED                         2504
  187. #define RAS_ENTRY_FILTER_UNCHANGED                      2505
  188. #define RAS_NO_MORE_QUEUE_MEMORY                        2506
  189. #define RAS_UNICODE_CONVERSION_ERROR                    2507
  190. #define RAS_INVALID_EVENTKEY_PTR                        2508
  191. #define RAS_INVALID_PATHLEN_PTR                         2509
  192. #define RAS_INVALID_BUFLEN_PTR                          2510
  193.  
  194. /**********************************************************************/
  195. /* Possible returns from FormatDLL routine (in addition to NO_ERROR)  */
  196. /**********************************************************************/
  197.  
  198. #define RAS_FMTDLL_EXCEPTION                            2511
  199. #define RAS_FMTDLL_VAR_NOT_FOUND                        2512
  200. #define RAS_FMTDLL_BAD_VARIABLE                         2513
  201. #define RAS_FMTDLL_PROC_NOT_FOUND                       2514
  202. #define RAS_FMTDLL_BAD_SIZE_RETURN                      2515
  203. #define RAS_FMTDLL_NOT_FOUND                            2516
  204.  
  205. #define RAS_INVALID_LOCALE_OBJECT                       2600
  206.  
  207. #define MALLOC_ERROR                                    3001
  208.  
  209. /*--------------------------------------------------------------------*/
  210. /* Informational messages.                                            */
  211. /*--------------------------------------------------------------------*/
  212. #define LF_FILE_CREATED                                 4001
  213. #define RAS_FILE_CREATED                                4001
  214. #define SWITCHED_TO_DEFAULT_LOG                         4002
  215. #define LOG_ALREADY_SUSPENDED                           4003
  216. #define LOG_ALREADY_ACTIVE                              4004
  217. #define LF_REDIRECT_FAILED                              4005
  218. #define LF_REDIRECTED_TO_CURRENT                        4006
  219. #define LF_SIZE_IS_THE_SAME                             4007
  220. #define LF_FILE_CREATED_MINSIZE_USED                    4008
  221.  
  222. #define DEFAULT_LOG_FILE_ID   1
  223. #define RECSIZE 4096
  224.  
  225. /*--------------------------------------------------------------------------*/
  226. /* Event Notification Flags                                                 */
  227. /*--------------------------------------------------------------------------*/
  228. #define KEEP_EVENT_NOTIFICATION  0
  229. #define PURGE_EVENT_NOTIFICATION 1     /* LogChangeEventFilter flag         */
  230. #define RETURN_NO_DATA           1     /* LogOpenEvent read_flags           */
  231. #define DEQ_ON_ERROR             1     /* LogWaitEvent queue_flags          */
  232.  
  233. /*--------------------------------------------------------------------------*/
  234. /* LogReadEntry flags :                                                     */
  235. /*--------------------------------------------------------------------------*/
  236. /* START_AFTER_KEY is optional (default if no other start position specified*/
  237. /* START_AFTER_KEY, START_AT_FIRST_ENTRY and READ_LAST_RECORD are mutially  */
  238. /* exclusive and should not be specified together.                          */
  239. /* READ_MULTIPLE_RECORDS is ignored if specified with READ_LAST_RECORD      */
  240. #define START_AFTER_KEY       0x00000001L
  241. #define START_AT_FIRST_ENTRY  0x00000004L
  242. #define START_AT_THIS_ENTRY   0x00000008L
  243. #define READ_LAST_RECORD      0x00000010L
  244. #define READ_MULTIPLE_RECORDS 0x00010000L
  245.  
  246. /*--------------------------------------------------------------------------*/
  247. /* LogFormatEntry Flags:                                                    */
  248. /*--------------------------------------------------------------------------*/
  249. #define ERR_FORMAT_DETAIL_DATA                0x00000001
  250. #define FORMAT_ONLY_ERROR_DESCRIPTION         0X00000002
  251. #define TEMPLATE_NOT_FOUND                    0x00000004
  252. #define ERROR_DESCRIPTION_FILE_NOT_FOUND      0x00000008
  253. #define CAUSE_MSG_FILE_NOT_FOUND              0x00000010
  254. #define ACTION_MSG_FILE_NOT_FOUND             0x00000020
  255. #define DETAIL_DATA_FILE_NOT_FOUND            0x00000040
  256.  
  257. /*--------------------------------------------------------------------------*/
  258. /* defines for data description types                                       */
  259. /*--------------------------------------------------------------------------*/
  260. #define SUMMARY_HEADING                         1
  261. #define STANDARD_DETAIL1_HEADING                1
  262. #define STANDARD_DETAIL1_TEXT                   2
  263. #define STANDARD_DETAIL2_HEADING                3
  264. #define STANDARD_DETAIL2_TEXT                   4
  265. #define DATE_HEADING                            5
  266. #define DATE                                    6
  267. #define TIME_HEADING                            7
  268. #define TIME                                    8
  269. #define ENTRY_ID_HEADING                        9
  270. #define ENTRY_ID                               10
  271. #define SEVERITY_HEADING                       11
  272. #define SEVERITY                               12
  273. #define MODULE_NAME_HEADING                    13
  274. #define MODULE_NAME                            14
  275. #define DIRECTORY_NAME_HEADING                 15
  276. #define DIRECTORY_NAME                         16
  277. #define ERROR_MESSAGE_HEADING                  17
  278. #define ERROR_MESSAGE_TEXT                     18
  279. #define PROBE_ID_HEADING                       19
  280. #define PROBE_ID_TEXT                          20
  281. #define PROBE_FLAGS_HEADING                    21
  282. #define PROBE_FLAGS_TEXT                       22
  283. #define TEMPLATE_REPOSITORY_PATHNAME_HEADING   23
  284. #define TEMPLATE_REPOSITORY_PATHNAME_TEXT      24
  285. #define TEMPLATE_ID_HEADING                    25
  286. #define TEMPLATE_ID_TEXT                       26
  287. #define DUMP_GENERATED_HEADING                 27
  288. #define DUMP_GENERATED_TEXT                    28
  289. #define TRACE_FILE_GENERATED_HEADING           29
  290. #define TRACE_FILE_GENERATED_TEXT              30
  291. #define PROCESS_DUMP_GENERATED_HEADING         31
  292. #define PROCESS_DUMP_GENERATED_TEXT            32
  293. #define FAILURE_CAUSES_HEADING                 40
  294. #define FAILURE_CAUSES                         41
  295. #define FAILURE_ACTIONS_HEADING                50
  296. #define FAILURE_ACTIONS                        51
  297. #define INSTALL_CAUSES_HEADING                 60
  298. #define INSTALL_CAUSES                         61
  299. #define INSTALL_ACTIONS_HEADING                70
  300. #define INSTALL_ACTIONS                        71
  301. #define USER_CAUSES_HEADING                    80
  302. #define USER_CAUSES                            81
  303. #define USER_ACTIONS_HEADING                   90
  304. #define USER_ACTIONS                           91
  305. #define RETURN_CODE_HEADING                   100
  306. #define RETURN_CODE_TEXT                      101
  307. #define DUMP_FILENAME_HEADING                 110
  308. #define DUMP_FILENAME_TEXT                    111
  309. #define DUMP_FORMATTER_HEADING                112
  310. #define DUMP_FORMATTER_TEXT                   113
  311. #define DUMP_FILE_DELETION_DATE_HEADING       114
  312. #define DUMP_FILE_DELETION_DATE               115
  313. #define DUMP_FILE_DELETION_TIME_HEADING       116
  314. #define DUMP_FILE_DELETION_TIME               117
  315. #define TRACE_FILE_NAME_HEADING               120
  316. #define TRACE_FILE_NAME_TEXT                  121
  317. #define TRACE_FORMATTER_HEADING               122
  318. #define TRACE_FORMATTER_TEXT                  123
  319. #define TRACE_FILE_DELETION_DATE_HEADING      124
  320. #define TRACE_FILE_DELETION_DATE              125
  321. #define TRACE_FILE_DELETION_TIME_HEADING      126
  322. #define TRACE_FILE_DELETION_TIME              127
  323. #define PROCESS_DUMP_FILE_NAME_HEADING        130
  324. #define PROCESS_DUMP_FILE_NAME_TEXT           131
  325. #define PROCESS_DUMP_FORMATTER_HEADING        132
  326. #define PROCESS_DUMP_FORMATTER_TEXT           133
  327. #define PROCESS_DUMP_DELETION_DATE_HEADING    134
  328. #define PROCESS_DUMP_FILE_DELETION_DATE       135
  329. #define PROCESS_DUMP_DELETION_TIME_HEADING    136
  330. #define PROCESS_DUMP_FILE_DELETION_TIME       137
  331. #define PCT_HEADING                           140
  332. #define PCT_EXECUTION_PARAMETERS              141
  333. #define DMI_VENDOR_TAG_HEADING                150
  334. #define DMI_VENDOR_TAG_TEXT                   151
  335. #define DMI_TAG_HEADING                       155
  336. #define DMI_TAG_TEXT                          156
  337. #define PRODUCT_ID_HEADING                    165
  338. #define DMI_PRODUCT_ID_HEADING                165
  339. #define PRODUCT_ID_TEXT                       166
  340. #define DMI_PRODUCT_ID_TEXT                   166
  341. #define DMI_REVISION_HEADING                  170
  342. #define DMI_REVISION_TEXT                     171
  343. #define DMI_MODIFICATION_LEVEL_HEADING        172
  344. #define DMI_MODIFICATION_LEVEL_TEXT           173
  345. #define DMI_FIX_LEVEL_HEADING                 174
  346. #define DMI_FIX_LEVEL_TEXT                    175
  347. #define MODULE_NAME_TEXT                      181
  348. #define PROCESS_ID_HEADING                    185
  349. #define PROCESS_ID_TEXT                       186
  350. #define TASK_ID_HEADING                       190
  351. #define TASK_ID_TEXT                          191
  352. #define MACHINE_TYPE_HEADING                  195
  353. #define MACHINE_TYPE_TEXT                     196
  354. #define MACHINE_SERIAL_NUMBER_HEADING         200
  355. #define MACHINE_SERIAL_NUMBER_TEXT            201
  356. #define HOSTNAME_HEADING                      205
  357. #define HOSTNAME_TEXT                         206
  358. #define USER_DATA_HEADING                     210
  359. #define USER_DATA_TEXT                        211
  360. #define ACTION_HEADING                        213
  361. #define ACTION_TEXT                           214
  362. #define OLD_VALUE_DET2_HEADING                215
  363. #define OLD_VALUE_DET2_TEXT                   216
  364. #define NEW_VALUE_DET2_HEADING                220
  365. #define NEW_VALUE_DET2_TEXT                   221
  366.  
  367. #define SUMMARY_HEADING_DET2                    7
  368. #define YES_STR                                 2
  369. #define YES_DELETED_STR                         3
  370. #define NO_STR                                  4
  371.  
  372. /*--------------------------------------------------------------------------*/
  373. /* defines for DET4 data description types                                  */
  374. /*--------------------------------------------------------------------------*/
  375. #define CREATED_BY_BACKLEVEL_TEXT             222
  376. #define RECORD_ID_HEADING                     223
  377. #define RECORD_ID                             224
  378. #define QUALIFIER_HEADING                     225
  379. #define QUALIFIER                             226
  380. #define ORIGINATOR_HEADING                    227
  381. #define ORIGINATOR                            228
  382. #define DET4_USER_DATA                        229
  383. #define PROCESS_NAME_HEADING                  230
  384. #define PROCESS_NAME                          231
  385. #define FMTDLL_HEADING                        232
  386. #define FMTDLL_NAME                           233
  387. #define FMTDLL_TEXT                           234
  388. #define GA_COMPONENT_ID_HEADING               235
  389. #define GA_COMPONENT_ID                       236
  390. #define GA_RELEASE_LEVEL_HEADING              237
  391. #define GA_RELEASE_LEVEL                      238
  392. #define GA_SOFTWARE_NAME_HEADING              239
  393. #define GA_SOFTWARE_NAME                      240
  394. #define GENERIC_ALERT_SUBVECTOR_HEADING       241
  395. #define GENERIC_ALERT_SUBVECTOR_TEXT          242
  396. #define PROBABLE_CAUSES_SUBVECTOR_HEADING     243
  397. #define PROBABLE_CAUSES_SUBVECTOR_TEXT        244
  398. #define USER_CAUSES_SUBVECTOR_HEADING         245
  399. #define INSTALL_CAUSES_SUBVECTOR_HEADING      246
  400. #define FAILURE_CAUSES_SUBVECTOR_HEADING      247
  401. #define SUBVECTOR_KEY_HEADING                 248
  402. #define SUBVECTOR_KEY_TYPE                    249
  403. #define SUBVECTOR_KEY_TEXT                    250
  404. #define HEX_DUMP_TEXT                         251
  405.  
  406. /*--------------------------------------------------------------------------*/
  407. /* Log Format flag constants                                                */
  408. /*--------------------------------------------------------------------------*/
  409. #define RESERVED_FLAGS                  0x00000003
  410. #define CK_BIT1                         0x00000002
  411. #define FULL_FORMAT                     0x00000000
  412.  
  413. /*--------------------------------------------------------------------------*/
  414. /* Structure for packets returned by logformat                              */
  415. /*--------------------------------------------------------------------------*/
  416. typedef struct _LFEDETAIL2                       /*                         */
  417.        {
  418.        ULONG    length;                          /*                         */
  419.        ULONG    type;                            /*                         */
  420. /*     PVOID    data;                                                       */
  421.       }LFEDETAIL2   , *PLFEDETAIL2;
  422.  
  423. /*--------------------------------------------------------------------------*/
  424. /* Structure for buffer returned by logformat                               */
  425. /*--------------------------------------------------------------------------*/
  426. typedef struct _LFEDETAIL                        /*                         */
  427.        {
  428.        ULONG    packet_size;                     /*                         */
  429.        ULONG    packet_revision_number;          /*                         */
  430.        ULONG    number_of_detail_records;        /*                         */
  431.        LFEDETAIL2 detail_records;                /*                         */
  432.       }LFEDETAIL   , *PLFEDETAIL;
  433.  
  434. /*--------------------------------------------------------------------------*/
  435. /* Standard Date & Time structures used by Logging Framework                */
  436. /*--------------------------------------------------------------------------*/
  437. typedef struct _LOGDATE
  438.        {
  439.        BYTE   day;
  440.        BYTE   month;
  441.        USHORT year;
  442.        }LOGDATE, *PLOGDATE;
  443.  
  444. typedef struct _LOGTIME
  445.        {
  446.        BYTE   hours;
  447.        BYTE   minutes;
  448.        BYTE   seconds;
  449.        BYTE   hundredths;
  450.        }LOGTIME, *PLOGTIME;
  451.  
  452. /*--------------------------------------------------------------------------*/
  453. /* Structure for LogOpenFile API:                                           */
  454. /*--------------------------------------------------------------------------*/
  455. typedef struct _LOFREQUEST                       /* Log Open File structure */
  456.        {
  457.        ULONG    packet_size;                     /* size in bytes of packet */
  458.        ULONG    packet_revision_number;          /* revision level of pkt.  */
  459.        PULONG   log_file_ID;                     /* Id of file to be opened */
  460.        PULONG    filename_length;                /* length of filename      */
  461.        PVOID     filename;                       /* pointer to the filename */
  462.       }LOFREQUEST, *PLOFREQUEST;
  463.  
  464. /*--------------------------------------------------------------------------*/
  465. /* Structure for LogCloseFile API:                                          */
  466. /*--------------------------------------------------------------------------*/
  467. typedef struct _LCFREQUEST                    /* Log Close File structure   */
  468.        {
  469.        ULONG    packet_size;                  /* size in bytes of packet    */
  470.        ULONG    packet_revision_number;       /* revision level of parm pkt.*/
  471.        ULONG    log_file_ID;                  /* Id of the file to be closed*/
  472.       }LCFREQUEST, *PLCFREQUEST;
  473.  
  474. /*--------------------------------------------------------------------------*/
  475. /* Structure for the header information for DET1, DET2, and DET4 records    */
  476. /*--------------------------------------------------------------------------*/
  477. typedef struct _DETAILHDR                        /* HDR format structure    */
  478.        {
  479.        ULONG    packet_size;                     /* size in bytes of packet */
  480.        ULONG    packet_revision_number;          /* revision level of pkt.  */
  481.        ULONG    record_type;                     /* 1=DET1, 2=DET2, 4=DET4  */
  482.        LOGDATE  date_event_occurred;             /* date of failure         */
  483.        LOGTIME  time_event_occurred;             /* time of failure         */
  484.        ULONG    entry_ID;                        /* # assigned to the record*/
  485.        ULONG    next_record_location;          /* loc of next record in file*/
  486.        ULONG    previous_record_location;      /* loc of prev record in file*/
  487.        }DETAILHDR, * PDETAILHDR;
  488.  
  489. /*--------------------------------------------------------------------------*/
  490. /* Structure for Detail 1 error log record                                  */
  491. /*--------------------------------------------------------------------------*/
  492. typedef struct _ERRORDET1                        /* DET1 format structure   */
  493.        {
  494.        DETAILHDR hdr;                            /* DETx common section     */
  495.        ULONG    system_machine_type_offset;      /* offset to machine type  */
  496.        ULONG    system_serial_number_offset;     /* offset to serial num    */
  497.        ULONG    system_hostname_offset;          /* offset to host name     */
  498.        ULONG    template_filename_length;
  499.        ULONG    template_filename_offset;        /* offset to templ filename*/
  500.        ULONG    template_record_ID;              /* id of entry in T.R. file*/
  501.        ULONG    DMI_vendor_tag_offset;
  502.        ULONG    DMI_tag_offset;                  /* offset to a product name*/
  503.        ULONG    DMI_product_ID_offset;           /* offset to a product #   */
  504.        ULONG    DMI_revision_number_offset;      /* vers. number offset     */
  505.        ULONG    DMI_modification_level_offset;   /* modification lvel offset*/
  506.        ULONG    DMI_fix_level_offset;            /* fix level offset        */
  507.        ULONG    module_offset;                /*detecting module name offset*/
  508.        ULONG    process_pathname_length;         /* len of process pathname */
  509.        ULONG    process_pathname_offset;         /* offset to process path  */
  510.        ULONG    severity;                        /* severity code 1-6       */
  511.        ULONG    probe_ID;                        /* Id of firing probe      */
  512.        ULONG    description_inserts_offset;      /* offset to msg inserts   */
  513.        ULONG    dump_filename_length;            /* length of dump filename */
  514.        ULONG    dump_filename_offset;            /* offset to dump file name*/
  515.        LOGDATE  dump_deletion_date;              /*date file deleted by FFST*/
  516.        LOGTIME  dump_deletion_time;
  517.        ULONG    dump_formatter_parms_offset;     /* offset to name & parms  */
  518.                                                  /* to start Dump formatter */
  519.        ULONG    trace_filename_length;           /* length of trace filename*/
  520.        ULONG    trace_filename_offset;           /* offset to trace filename*/
  521.        LOGDATE  trace_deletion_date;             /*date file deleted by FFST*/
  522.        LOGTIME  trace_deletion_time;
  523.        ULONG    trace_formatter_parms_offset;    /* offset to name & parms  */
  524.                                                  /* to start Trace formatter*/
  525.        ULONG    process_filename_length;         /* Len of process dump name*/
  526.        ULONG    process_filename_offset;         /* offset to dump file name*/
  527.        LOGDATE  process_deletion_date;           /* Date deleted by FFST... */
  528.        LOGTIME  process_deletion_time;
  529.        ULONG    process_formatter_parms_offset;  /* offset to name & parms  */
  530.                                      /* to start the Process Dump formatter */
  531.        ULONG    PCT_formatter_parms_offset;      /* offset to name & parms  */
  532.                                                  /* to start PCT utility    */
  533.        ULONG    probe_flags;                   /*type of info placed in dump*/
  534.        ULONG    reserved_1_ULONG;                /* RESERVED                */
  535.        ULONG    reserved_2_ULONG;
  536.        ULONG    reserved_3_ULONG;
  537.        ULONG    return_code;                     /* return code from ffst   */
  538.        ULONG    user_entry_data_length;          /*length of user entry data*/
  539.        ULONG    user_entry_data_offset;          /* offset to user data     */
  540.       }ERRORDET1, *PERRORDET1;
  541.  
  542.  
  543. /*--------------------------------------------------------------------------*/
  544. /* Structure for Detail 2 error log record                                  */
  545. /*--------------------------------------------------------------------------*/
  546. typedef struct _ERRORDET2      /* Control log record (DET2) format structure*/
  547.        {
  548.        DETAILHDR hdr;                        /* DETx common section         */
  549.        ULONG    action;                      /* action that created this rec*/
  550.       }ERRORDET2, *PERRORDET2;
  551.  
  552. typedef struct _DET2_FILESIZE                    /* ERRORDET2 for action max*/
  553.         {                                        /* size change and redirect*/
  554.           ULONG old_max_size;                    /* old max file size       */
  555.           ULONG new_max_size;                    /* new max file size       */
  556.           ULONG old_pathname_length;             /* old file path len       */
  557.           ULONG old_pathname_offset;             /* offset to old path      */
  558.           ULONG new_pathname_length;             /* new file path len       */
  559.           ULONG new_pathname_offset;             /* offset to new path      */
  560.         }DET2_FILESIZE, *PDET2_FILESIZE;
  561.  
  562. /* ERRORDET2 for action file name change - file names follow ERRORDET2 record*/
  563. typedef UniChar *POLD_PATHNAME;                  /* previous file name      */
  564. typedef UniChar *PNEW_PATHNAME;                  /* new file name           */
  565.  
  566. /*--------------------------------------------------------------------------*/
  567. /* Structure for Detail 4 error log record                                  */
  568. /*--------------------------------------------------------------------------*/
  569. typedef struct _ERRORDET4                        /* DET4 format structure   */
  570.        {
  571.        DETAILHDR hdr;                            /* DETx common section     */
  572.        USHORT    rec_ID;                         /* record ID               */
  573.        ULONG     status;                         /* status bytes            */
  574.        union {
  575.          UniChar   uniQual[4];                   /* Unicode qualifier name  */
  576.                                                  /*       - or -            */
  577.          UCHAR     ascQual[4];                   /* ASCII qualifier name    */
  578.                 } qualifier;
  579.        ULONG     error_log_entry_data_length;  /* length of user_entry_data */
  580.        ULONG     error_log_entry_data_offset; /* offset to user_entry_data  */
  581.       }ERRORDET4, *PERRORDET4;
  582.  
  583. /*--------------------------------------------------------------------------*/
  584. /* Filter data structures                                                   */
  585. /*--------------------------------------------------------------------------*/
  586.  
  587. typedef struct _EVENTKEY                         /* Event Key data structure*/
  588.        {
  589.        ULONG    location;                        /* location within Log File*/
  590.        ULONG    entry_ID;                        /* entry ID of the record  */
  591.       }EVENTKEY, *PEVENTKEY;
  592.  
  593. typedef struct _SUBBLOCK               /* Format selection criteria subblock*/
  594.        {
  595.        ULONG    entry_attribute_ID;            /* attribute id              */
  596.        ULONG    comparison_operator_ID;        /* comparison operator       */
  597.        ULONG    comparison_data_length;        /* len for non implicit attr */
  598.        PVOID    comparison_data_ptr;           /* ptr to item being compared*/
  599.        struct _SUBBLOCK * next_subblock;       /* next subblock in chain    */
  600.       }SUBBLOCK, *PSUBBLOCK;
  601.  
  602.  
  603. typedef struct _HEADERBLOCK                /* Header block format structure */
  604.        {
  605.        PSUBBLOCK pSubblock;                /* size of this packet           */
  606.        struct _HEADERBLOCK * pNextBlock;   /* ptr to next block in chain    */
  607.       }HEADERBLOCK, *PHEADERBLOCK;
  608.  
  609.  
  610. typedef struct _FILTERBLOCK                     /* Filter block structure   */
  611.        {
  612.        ULONG    packet_size;                    /* size of this packet      */
  613.        ULONG    packet_revision_number;         /* revision level           */
  614.        PHEADERBLOCK header_block;               /* ptr to first header block*/
  615.       }FILTERBLOCK, *PFILTERBLOCK;
  616.  
  617. /*--------------------------------------------------------------------------*/
  618. /* attribute id's for error log entries - used in filter sub blocks         */
  619. /* NOTE: update LOG_ERROR_FILTER_MAX when adding filters                    */
  620. /*--------------------------------------------------------------------------*/
  621. #define LOG_ERROR_DATE                    1      /* date type               */
  622. #define LOG_ERROR_TIME                    2      /* time type               */
  623. #define LOG_ERROR_ENTRY_ID                3      /* unsigned long integer   */
  624. #define LOG_ERROR_RECORD_TYPE             4      /* unsigned long integer   */
  625. #define LOG_ERROR_MACHINE_TYPE            5      /* string type             */
  626. #define LOG_ERROR_SERIAL_NUMBER           6      /* string type             */
  627. #define LOG_ERROR_SEVERITY                7      /* unsigned long integer   */
  628. #define LOG_ERROR_DMI_VENDOR_TAG          8      /* string type             */
  629. #define LOG_ERROR_DMI_TAG                 9      /* string type             */
  630. #define LOG_ERROR_DMI_REVISION            10     /* string type             */
  631. #define LOG_ERROR_SOURCE_MODULE_NAME      11     /* string type             */
  632. #define LOG_ERROR_PROCESS_PATHNAME        12     /* string type             */
  633. #define LOG_ERROR_PROBE_ID                13     /* unsigned long integer   */
  634. #define LOG_ERROR_USER_DATA               14     /* string type             */
  635.  
  636. #define LOG_ERROR_FILTER_MAX              14     /* number of filter attrib */
  637. /*--------------------------------------------------------------------------*/
  638. /* comparison operator IDs - used in filter sub blocks */
  639. /*--------------------------------------------------------------------------*/
  640. #define LOG_ERROR_EQUAL                   1      /* all types               */
  641. #define LOG_ERROR_NOT_EQUAL               2      /* all types               */
  642. #define LOG_ERROR_GREATER_THAN            3      /* date, time unsigned long*/
  643. #define LOG_ERROR_GREATER_THAN_OR_EQUAL   4      /* date, time unsigned long*/
  644. #define LOG_ERROR_LESS_THAN               5      /* date, time unsigned long*/
  645. #define LOG_ERROR_LESS_THAN_OR_EQUAL      6      /* date, time unsigned long*/
  646. #define LOG_ERROR_SUBSTRING_MATCH         7      /* string type only        */
  647.  
  648. /*--------------------------------------------------------------------------*/
  649. /* Structure for LogReadFile API:                                           */
  650. /*--------------------------------------------------------------------------*/
  651. typedef struct _LREREQUEST                   /* Log Read Request parm packet*/
  652.        {
  653.        ULONG     packet_size;                   /* size in bytes of packet  */
  654.        ULONG     packet_revision_number;        /* revision level of pkt.   */
  655.        ULONG     log_file_ID;                   /* ID of Log File to be used*/
  656.        ULONG     flags;                  /*rel position to begin file search*/
  657.        PEVENTKEY pEventKey;                     /* ptr to event key data str*/
  658.        PFILTERBLOCK pFilter;             /* ptr to event filter for search  */
  659.        PULONG    pLogEntryBufferLength;         /* IN: len of callers buffer*/
  660.                                                 /*OUT: # bytes put in buffer*/
  661.        PVOID     pLogEntryBuffer;        /* ptr to buffer containing Log Rec*/
  662.       }LREREQUEST, *PLREREQUEST;
  663.  
  664. /*--------------------------------------------------------------------------*/
  665. /* Structure for LogFormatEntry API:                                        */
  666. /*--------------------------------------------------------------------------*/
  667. typedef struct _LFEREQUEST            /* Log Format Request parameter packet*/
  668.        {
  669.        ULONG    packet_size;                     /* size in bytes of packet */
  670.        ULONG    packet_revision_number;          /* revision level of pkt.  */
  671.        PVOID    log_entry_buffer;                /* ptr to Log Entry record */
  672.        PVOID    locale_object;                   /* this should be          */
  673.                                                  /* LocaleObject PVOID here */
  674.                                                  /* so as to not include    */
  675.                                                  /* unicode lib in this file*/
  676.        PULONG   number_of_detail_records;        /* ltd count               */
  677.        ULONG    flags;                           /* 4 byte flag word        */
  678.        PULONG   string_buffer_length;            /* IN: ptr to caller string*/
  679.                      /*buffer length; OUTPUT: bytes of strings placed on buf*/
  680.        PVOID    string_buffer;                   /* ptr to outputbuffer     */
  681.       }LFEREQUEST, *PLFEREQUEST;
  682.  
  683. /*--------------------------------------------------------------------------*/
  684. /* Structure  for LogOpenEventNotification:                                 */
  685. /*--------------------------------------------------------------------------*/
  686. typedef struct _LOENREQUEST      /* LogOpenEventNotification paramete packet*/
  687.        {
  688.        ULONG    packet_size;                     /* size in bytes of packet */
  689.        ULONG    packet_revision_number;          /* revision level of pkt.  */
  690.        ULONG    log_file_ID;                     /* ID for this Log File    */
  691.        ULONG    read_flags;                      /* return record           */
  692.        PULONG   pLogNotify;                      /* ptr to hdl of event que */
  693.        PFILTERBLOCK pFilter;                     /* ptr to event filter data*/
  694.       }LOENREQUEST, *PLOENREQUEST;
  695.  
  696. /*--------------------------------------------------------------------------*/
  697. /* Structure  for LogCloseEventNotification :                               */
  698. /*--------------------------------------------------------------------------*/
  699. typedef struct _LCENREQUEST           /* LogCloseEventQueue parameter packet*/
  700.        {
  701.        ULONG    packet_size;                     /* size in bytes of packet */
  702.        ULONG    packet_revision_number;          /* revision level of pkt.  */
  703.        ULONG    LogNotify;                       /* handle of the event que */
  704.       }LCENREQUEST, *PLCENREQUEST;
  705.  
  706.  
  707. /*--------------------------------------------------------------------------*/
  708. /* Structure  for LogChangeEventfilter :                                    */
  709. /*--------------------------------------------------------------------------*/
  710. typedef struct _LCEFREQUEST         /* LogChangeEventFilter parameter packet*/
  711.        {
  712.        ULONG    packet_size;                     /* size in bytes of packet */
  713.        ULONG    packet_revision_number;          /* rev level of parm pkt   */
  714.        ULONG    purge_flags;                     /* purge event notif queue */
  715.        ULONG    LogNotify;                       /* handle of event notif q */
  716.        PFILTERBLOCK pFilter;                     /* ptr to event filter data*/
  717.       }LCEFREQUEST, *PLCEFREQUEST;
  718.  
  719.  
  720. /*--------------------------------------------------------------------------*/
  721. /* Structure  for LogWaitEvent :                                            */
  722. /*--------------------------------------------------------------------------*/
  723. typedef struct _LWEREQUEST                  /* LogWaitEvent parameter packet*/
  724.        {
  725.        ULONG     packet_size;                    /* size in bytes of packet */
  726.        ULONG     packet_revision_number;         /* revision level of pkt.  */
  727.        ULONG     LogNotify;                      /* event notification id   */
  728.        PEVENTKEY pEventKey;                      /* ptr to event key data   */
  729.        PULONG    log_entry_buffer_length;
  730.        PVOID     pLogEntryBuffer;
  731.        ULONG     timeout;                  /*msec that caller will wait     */
  732.        ULONG     queue_flags;                    /* 1 - dequeue on error    */
  733.        PULONG    pathname_length;                /* len of filename         */
  734.        PVOID     pathname;                       /* ptr to filename         */
  735.       }LWEREQUEST, *PLWEREQUEST;
  736.  
  737. /*--------------------------------------------------------------------------*/
  738. /* Function prototypes                                                      */
  739. /*--------------------------------------------------------------------------*/
  740. extern APIRET APIENTRY LogOpenFile(ULONG service, PVOID pOpenFile);
  741. extern APIRET APIENTRY LogCloseFile(ULONG service, PVOID pCloseFile);
  742. extern APIRET APIENTRY LogReadEntry(ULONG service, PVOID pReadEntry);
  743. extern APIRET APIENTRY LogFormatEntry(ULONG service, PVOID pFormatEntry);
  744. extern APIRET APIENTRY LogOpenEventNotification(ULONG service, PVOID pOpenEventNotification);
  745. extern APIRET APIENTRY LogCloseEventNotification(ULONG service, PVOID pCloseEventNotification);
  746. extern APIRET APIENTRY LogChangeEventFilter(ULONG service, PVOID pChangeEventFilter);
  747. extern APIRET APIENTRY LogWaitEvent(ULONG service, PVOID pWaitEvent);
  748.  
  749. #endif
  750.