запись в системный лог

Тема в разделе "WASM.WIN32", создана пользователем walker, 20 май 2007.

  1. walker

    walker New Member

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    2
    Уважаемые товарисчи, вот такая проблемма, пытаюсь писать в системный лог из моего драйвера на старте системы, сообщение в логе появляется, но содержится в нем следующее:
    Чтобы писать свои сообщения в системный лог, я создал с помощью утилитки mc.exe свой файл ресурсов, подключил его проекту, также подцепил полученный h-файл, в реестре прописал
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\System\ICDriver
    следующие параметры:
    EventMessageFile = %SystemRoot%\System32\ICDriver.sys
    TypesSupported = 7

    Вроде ресурсы подцепились нормально, открыл полученный sys-файл в студии - отобразил. Функция записи в лог:
    Код (Text):
    1. //производится запись в системный журнал
    2. void WriteErrorLog(IN   PVOID       IoObject,
    3.                    IN   NTSTATUS    ErrorCode,
    4.                    IN   NTSTATUS    FinalStatus)
    5. {
    6.     UNICODE_STRING uniErrorString = {0};
    7.     PIO_ERROR_LOG_PACKET errorLogEntry ;
    8.     PWCHAR insertionString ;
    9.     UCHAR   EntrySize;
    10.  
    11.     EntrySize = sizeof (IO_ERROR_LOG_PACKET);
    12.     EntrySize += 30 + sizeof(UNICODE_NULL);
    13.     errorLogEntry = (PIO_ERROR_LOG_PACKET)IoAllocateErrorLogEntry( IoObject, EntrySize);
    14.  
    15.     if(errorLogEntry)
    16.     {
    17.         errorLogEntry->ErrorCode = ErrorCode;
    18.         errorLogEntry->SequenceNumber = 0;
    19.         errorLogEntry->MajorFunctionCode = 0 ;
    20.         errorLogEntry->RetryCount = 0;
    21.         errorLogEntry->UniqueErrorValue = 0;
    22.         errorLogEntry->FinalStatus = FinalStatus;
    23.         errorLogEntry->DumpDataSize = NULL;
    24.         errorLogEntry->StringOffset = sizeof(IO_ERROR_LOG_PACKET) - sizeof(ULONG);
    25.         errorLogEntry->NumberOfStrings = 0;
    26.  
    27.         IoWriteErrorLogEntry(errorLogEntry);
    28.     }
    29. }
    вызываю эту функцию слудющим образом:
    Код (Text):
    1. PDEVICE_OBJECT devObj;
    2. ...
    3. ...
    4. ...
    5. WriteErrorLog(devObj->DriverObject,ICDRIVER_CHECK_SUCCESS, STATUS_SUCCESS);
    mc-файл прикрепил, так как в нем используется другая кодировка. Подскажите, пожалуйста, в чем моя ошибка?
     
  2. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    при записи в лог не используется ресурс из mc-шника
    грубо говоря - что он есть, что его нет
    он используется только при просмотре лога
    проверь что драйвер на месте, что в нем ресурс на месте - и все заработает
     
  3. walker

    walker New Member

    Публикаций:
    0
    Регистрация:
    20 май 2007
    Сообщения:
    2
    как обычно - самые сложные ошибки - самые глупые. Драйвер-то у меня лежал не в system32\ а в system32\drivers\. так что первый мой пост можно считать руководством по записи в системный лог)