· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Драйвер в ФАСМ

<< . 1 . 2 . 3 .

Посл.отвђт Сообщенiе


Дата: Июл 27, 2004 18:46:11

ProgramMan
Пытаюсь.


Дата: Июл 28, 2004 06:13:26

Все проблемы от того, что секция .reloc оказывается пустой. Вместо вызова HalMakeBeep можно ограничится mov eax,DriverEntry. Вобщем в драйвере должна быть хотя бы одна ссылка на самого себя.


Дата: Июл 28, 2004 08:39:05

Возможно проблема в следующем:
в приммере у pas ни у одной процедуры нет эпилога endp.
У меня FASM ругается что-то типа "неожиданный конец файла"
Получается pas использует старые макросы, которые не требуют эпилога - в этом и есть косяк!


Дата: Июл 28, 2004 10:06:21

Black_mirrorУ меня драйвер роботает вообще без импорта чего-либо.

aXe Нет, дело не в этом.


Дата: Июл 28, 2004 10:16:10

pas выложи оба готовых .sys файла.
Я их попробую их запустить, заодно посмотрю чем они отличаються изнутри :)


Дата: Июл 28, 2004 12:06:14

ProgramMan
Я не совсем ясно выразился: в секции .reloc должна быть хотя бы одна запись
format PE DLL native 4.0 at 10000h 
entry main 

include '%include%\win32a.inc' 

section '.text' code readable executable notpageable 

TableGDT: 
LTable dw 0h 
BTable db '000' 
ETable db 0h 
proc main,pDriverObject,pDriverPath 
push eax 
push ebx 

SGDT [TableGDT]        ;если закоментировать эти три команды
mov ax,[LTable]        ;то драйвер работать не будет
mov ebx,Dword[BTable]  ;так как секция .reloc будет пустой
pop ebx 
pop eax 
return 
endp 
section 'INIT' code import readable notpageable 
dd rva szHal_dll 
times 5 dd 0 
szHal_dll db 'HAL.dll',0 
section '.reloc' data fixups readable discardable 


PS: А fasm тут вообще не причем ...


Дата: Июл 28, 2004 17:32:24 · Поправил: pas

aXe
Макросы новые просто в конец макроса return я добавил endp.
Black_mirror
А секция section 'INIT' зачем? Ведь функции из hal.dll не используются?
В аттаче bad.sys - не рабочий
work.sys - рабочий


Дата: Июл 28, 2004 17:34:18

Вот аттач. Добавить аттач при правке не получилось.

1036580675__drv.rar


Дата: Июл 28, 2004 17:39:51

pas тебе на FASM так нечего и не ответели?


Дата: Июл 28, 2004 17:58:08

ProgramMan
Нет пока. Добавил после секции релоков
db 0
align 32
ошибка продолжает появляться но номер уже c0000005.


Дата: Июл 28, 2004 18:09:08

Да дело не в секции.
Посмотри http://board.flatassembler.net/viewtopic.php?t=256
Там вроде подобную проблему поднимали.


Дата: Июл 28, 2004 21:16:00

pas
Этот драйвер приводил ProgramMan на первой странице.

А bad.sys не работает из-за отсутствия релоков! И выравнивание тут совершенно не причем.


Дата: Июл 29, 2004 04:54:44 · Поправил: pas

Black_mirror
Спасибо всё работает.
Вот код без секции импорта:
proc MakeBeep1,dwPitch 
        enter 
        cli 
        mov     al,0B6h 
        out     43h,al 
        mov     eax,[dwPitch] 
        out     42h,al 
        mov     al,ah 
        out     42h,al 
        in      al,61h 
        or      al,3 
        out     61h,al 
        sti 
        mov     eax,1800000h 
     .delay_loop: 
        dec     eax 
        or      eax,eax 
        jnz     .delay_loop 
        cli 
        in      al,61h 
        and     al,0FCh 
        out     61h,al 
        sti 
        return 
       mov eax,main
proc main,pDriverObject,pDriverPath 
        enter 
        push    474h 
        call    MakeBeep1 
        push    389h 
        call    MakeBeep1 
        push    620h 
        call    MakeBeep1  
        mov     eax,1800000h 
.delay_loop: 
        dec     eax 
        or      eax,eax 
        jnz     .delay_loop 
        ;push    0 
        ;call    [imp_HalMakeBeep]
        
        mov     eax,0C0000182h
        return 
section '.reloc' data fixups readable discardable notpageable



Дата: Июл 29, 2004 05:17:40

ДЕЙСТВИТЕЛНО РАБОТАЕТ.
ВСЕМ СПАСИБО.

<< . 1 . 2 . 3 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064