|
|
| Посл.отвђт | Сообщен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 |
|
|
Дата: Июл 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 ДЕЙСТВИТЕЛНО РАБОТАЕТ. ВСЕМ СПАСИБО. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064 |