Запись в файл из KernelMode

Тема в разделе "WASM.WIN32", создана пользователем netex, 5 апр 2006.

  1. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    Нужно писать в журнал (txt файл) при старте ОС и при выключении.

    Запись идет в процедурах DiverEntry и MJ_SHUTDOWN.

    ZwWriteFile вызывается два раза (пишем данные из разных блоков памяти).

    Примерно с переодичностью 1/5 ZwWriteFile возвращает STATUS_PENDING и один из блоков не записывается.

    Перекомбинировал все параметры в ZwCreateFile, не помогло.

    Драйвер запускается как Service_auto_start.
     
  2. Ation

    Ation New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2005
    Сообщения:
    92
    Адрес:
    Zaporozhie
    я так понял ты пишешь в файл асинхронно, и никакую синхронизацию в блоках ты не делаешь?

    Исчо можно кодик положить :)
     
  3. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    Эта процедура вызывается из DriverEntry.



    WRITE_PROC proc pText:lol: WORD,SizeText:lol: WORD



    local FileHandle:lol: WORD

    local InitStruct:OBJECT_ATTRIBUTES

    local My_Status:IO_STATUS_BLOCK



    ;int 3



    lea eax,InitStruct

    assume eax:ptr OBJECT_ATTRIBUTES

    sub edx,edx

    mov [eax]._Length,sizeof OBJECT_ATTRIBUTES

    mov [eax].ObjectName,offset FilePath

    mov [eax].Attributes,edx

    mov [eax].RootDirectory,edx

    mov [eax].SecurityDescriptor,edx

    mov [eax].SecurityQualityOfService,edx

    assume eax:nothing



    sub edx,edx

    invoke ZwCreateFile,addr FileHandle,FILE_APPEND_DATA,addr InitStruct,addr My_Status,edx,FILE_ATTRIBUTE_NORMAL,\

    edx,FILE_OPEN_IF,edx,edx,edx

    test eax,eax

    jnz FileError



    sub edx,edx

    invoke ZwWriteFile,FileHandle,edx,edx,edx,addr My_Status,offset SysCrashText,\

    sizeof SysCrashText,edx,edx



    sub edx,edx

    invoke ZwWriteFile,FileHandle,edx,edx,edx,addr My_Status,pText,\

    SizeText,edx,edx



    invoke ZwClose,FileHandle

    sub eax,eax

    ret



    FileError:

    mov eax,0fabcdeh

    ret



    WRITE_PROC endp