#include #include #define BUFFER_SIZE 4096 int main() { HANDLE hEventLog; EVENTLOGRECORD* pEventLogRecord; DWORD bytesRead, totalBytes, oldestEventNumber; BYTE* pBuffer; // イベントログを開く hEventLog = OpenEventLog(NULL, L"System"); if (hEventLog == NULL) { printf("イベントログを開くことができませんでした。エラーコード: %d\n", GetLastError()); return 1; } // イベントログの情報を取得する if (!GetOldestEventLogRecord(hEventLog, &oldestEventNumber)) { printf("イベントログの情報を取得できませんでした。エラーコード: %d\n", GetLastError()); CloseEventLog(hEventLog); return 1; } // 最も古いイベントの情報を取得する totalBytes = BUFFER_SIZE; pBuffer = (BYTE*)malloc(totalBytes); if (!ReadEventLog(hEventLog, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ, oldestEventNumber, pBuffer, totalBytes, &bytesRead, &totalBytes)) { if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { // バッファーサイズが不十分な場合は再試行する free(pBuffer); pBuffer = (BYTE*)malloc(totalBytes); if (!ReadEventLog(hEventLog, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ, oldestEventNumber, pBuffer, totalBytes, &bytesRead, &totalBytes)) { printf("イベントログの読み取りに失敗しました。エラーコード: %d\n", GetLastError()); free(pBuffer); CloseEventLog(hEventLog); return 1; } } else { printf("イベントログの読み取りに失敗しました。エラーコード: %d\n", GetLastError()); free(pBuffer); CloseEventLog(hEventLog); return 1; } } pEventLogRecord = (EVENTLOGRECORD*)pBuffer; printf("最も古いイベントの番号: %lu\n", pEventLogRecord->EventID); free(pBuffer); CloseEventLog(hEventLog); return 0; }