Получение текста событий из Event Log'a в Windows

456
11 января 2017, 01:50

Имеется не плохой пример от Microsoft по работе с Event Log, но проблема в том что текста самих событий он не выдаёт. Как можно получить текст событий?

    HANDLE h;
    EVENTLOGRECORD *pevlr;
    BYTE bBuffer[BUFFER_SIZE];
    DWORD dwRead, dwNeeded, cRecords, dwThisRecord;
    WCHAR LogName[15];
    // Open the event log.
    printf("\nInput Log Name you want to Read (Application, Security, \
System):\n");
    scanf("%s", LogName);
    h = OpenEventLog( NULL,    // use local computer
             LogName);   // source name
    if (h == NULL)
        printf("\n Could not open the Application event log\n");
                //ErrorExit("Could not open the Application event log.");
    pevlr = (EVENTLOGRECORD *) &bBuffer;
    // Get the record number of the oldest event log record.
    GetOldestEventLogRecord(h, &dwThisRecord);
    // Opening the event log positions the file pointer for this
    // handle at the beginning of the log. Read the event log records
    // sequentially until the last record has been read.
    while (ReadEventLog(h,                // event log handle
                EVENTLOG_FORWARDS_READ |  // reads forward
                EVENTLOG_SEQUENTIAL_READ, // sequential read
                0,            // ignored for sequential reads
                pevlr,        // pointer to buffer
                BUFFER_SIZE,  // size of buffer
                &dwRead,      // number of bytes read
                &dwNeeded))   // bytes in next record
    {
        while (dwRead > 0)
        {
            // Print the record number, event identifier, type,
            // and source name.
            printf("%02d  Event ID: 0x%08X ",
                dwThisRecord++, pevlr->EventID);
            printf("EventType: %d Source: %s\n",
                pevlr->EventType, (LPSTR) ((LPBYTE) pevlr +
                sizeof(EVENTLOGRECORD)));
            dwRead -= pevlr->Length;
            pevlr = (EVENTLOGRECORD *)
                ((LPBYTE) pevlr + pevlr->Length);
        }
        pevlr = (EVENTLOGRECORD *) &bBuffer;
    }
    CloseEventLog(h);
READ ALSO
Работа с классами и sfml

Работа с классами и sfml

Имеется класс button, который будет являться кнопкой в приложенииИспользуется вот так:

362
Программный выбор строк QComboBox

Программный выбор строк QComboBox

Есть своя реализация древовидной модели на основе QAbstractItemModelНа основе этой модели отображаются виджеты QTreeView и QComboBox (т

377
Как получить -NaN в C++ 14

Как получить -NaN в C++ 14

Как в C++ 14 с компилятором g++ (GNU C++) 47

359