не работает пример с KmdTut...

Тема в разделе "WASM.BEGINNERS", создана пользователем Necromancer13, 17 ноя 2007.

  1. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    читаю KmdKit, компилирую пример, а он не работает...:dntknw:

    вот исходник примера:

    программа, которая зарегистрировать должна драйвер:

    Код (Text):
    1. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    2. ;                                                                                                  
    3. ;  Программа управления драйвером beeper                                                            
    4. ;                                                                                                  
    5. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    6.  
    7. .386
    8. .model flat, stdcall
    9. option casemap:none
    10.  
    11. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    12. ;                              В К Л Ю Ч А Е М Ы Е    Ф А Й Л Ы                                    
    13. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    14.  
    15. include \masm32\include\windows.inc
    16.  
    17. include \masm32\include\kernel32.inc
    18. include \masm32\include\user32.inc
    19. include \masm32\include\advapi32.inc
    20.  
    21. includelib \masm32\lib\kernel32.lib
    22. includelib \masm32\lib\user32.lib
    23. includelib \masm32\lib\advapi32.lib
    24.  
    25. include \masm32\Macros\Strings.mac
    26.  
    27. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    28. ;                                          К О Д                                                    
    29. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    30.  
    31. .code
    32.  
    33. start proc
    34.  
    35. local hSCManager:HANDLE
    36. local hService:HANDLE
    37. local acDriverPath[MAX_PATH]:CHAR
    38.  
    39.     invoke OpenSCManager, NULL, NULL, SC_MANAGER_CREATE_SERVICE
    40.     .if eax != NULL
    41.         mov hSCManager, eax
    42.  
    43.         push eax
    44.         invoke GetFullPathName, $CTA0("beeper.sys"), sizeof acDriverPath, addr acDriverPath, esp
    45.         pop eax
    46.  
    47.         invoke CreateService, hSCManager, $CTA0("beeper"), $CTA0("Nice Melody Beeper"), \
    48.                 SERVICE_START + DELETE, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, \
    49.                 SERVICE_ERROR_IGNORE, addr acDriverPath, NULL, NULL, NULL, NULL, NULL
    50.         .if eax != NULL
    51.             mov hService, eax
    52.             invoke StartService, hService, 0, NULL
    53.             invoke DeleteService, hService
    54.             invoke CloseServiceHandle, hService
    55.         .else
    56.             invoke MessageBox, NULL, $CTA0("Can't register driver."), NULL, MB_ICONSTOP
    57.         .endif
    58.         invoke CloseServiceHandle, hSCManager
    59.     .else
    60.         invoke MessageBox, NULL, $CTA0("Can't connect to Service Control Manager."), \
    61.                             NULL, MB_ICONSTOP
    62.     .endif
    63.  
    64.     invoke ExitProcess, 0
    65.  
    66. start endp
    67.  
    68. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    69. ;                                                                                                  
    70. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    71.  
    72. end start
    исходник драйвера:

    Код (Text):
    1. ;@echo off
    2. ;goto make
    3.  
    4. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    5. ;                                                                                                  
    6. ;  beeper - Драйвер режима ядра                                                                    
    7. ;  Пищит системным динамиком                                                                        
    8. ;                                                                                                  
    9. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    10.  
    11. .386
    12. .model flat, stdcall
    13. option casemap:none
    14.  
    15. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    16. ;                              В К Л Ю Ч А Е М Ы Е    Ф А Й Л Ы                                    
    17. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    18.  
    19. include \masm32\include\w2k\ntstatus.inc
    20. include \masm32\include\w2k\ntddk.inc
    21. include \masm32\include\w2k\hal.inc
    22.  
    23. includelib \masm32\lib\w2k\hal.lib
    24.  
    25. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    26. ;                           С И М В О Л Ь Н Ы Е    К О Н С Т А Н Т Ы                                
    27. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    28.  
    29. TIMER_FREQUENCY        equ 1193167                   ; 1,193,167 Гц
    30. OCTAVE                 equ 2                         ; множитель октавы
    31.  
    32. PITCH_C                equ 523                       ; До        -  523,25 Гц
    33. PITCH_Cs               equ 554                       ; До диез   -  554,37 Гц
    34. PITCH_D                equ 587                       ; Ре        -  587,33 Гц
    35. PITCH_Ds               equ 622                       ; Ре диез   -  622,25 Гц
    36. PITCH_E                equ 659                       ; Ми        -  659,25 Гц
    37. PITCH_F                equ 698                       ; Фа        -  698,46 Гц
    38. PITCH_Fs               equ 740                       ; Фа диез   -  739,99 Гц
    39. PITCH_G                equ 784                       ; Соль      -  783,99 Гц
    40. PITCH_Gs               equ 831                       ; Соль диез -  830,61 Гц
    41. PITCH_A                equ 880                       ; Ля        -  880,00 Гц
    42. PITCH_As               equ 988                       ; Ля диез   -  987,77 Гц
    43. PITCH_H                equ 1047                      ; Си        - 1046,50 Гц
    44.  
    45. ; Нам нужны три звука для до-мажорного арпеджио (до, ми, соль)
    46.  
    47. TONE_1                 equ TIMER_FREQUENCY/(PITCH_C*OCTAVE)
    48. TONE_2                 equ TIMER_FREQUENCY/(PITCH_E*OCTAVE)
    49. TONE_3                 equ (PITCH_G*OCTAVE)           ; для HalMakeBeep
    50.  
    51. DELAY                  equ 1800000h                   ; для моей ~800mHz машины
    52.  
    53. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    54. ;                                         М А К Р О С Ы                                            
    55. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    56.  
    57. DO_DELAY MACRO
    58.     mov eax, DELAY
    59.     .while eax
    60.         dec eax
    61.     .endw
    62. ENDM
    63.  
    64. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    65. ;                                              К О Д                                                
    66. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    67.  
    68. .code
    69.  
    70. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    71. ;                                            MakeBeep1                                              
    72. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    73.  
    74. MakeBeep1 proc dwPitch:DWORD
    75.  
    76.     ; Прямой доступ к оборудованию через порты ввода-вывода
    77.  
    78.     cli
    79.  
    80.     mov al, 10110110y
    81.     out 43h, al
    82.  
    83.     mov eax, dwPitch
    84.     out 42h, al
    85.  
    86.     mov al, ah
    87.     out 42h, al
    88.  
    89.     ; включить динамик
    90.  
    91.     in al, 61h
    92.     or  al, 11y
    93.     out 61h, al
    94.  
    95.     sti
    96.  
    97.     DO_DELAY
    98.  
    99.     cli
    100.  
    101.     ; выключить динамик
    102.  
    103.     in al, 61h
    104.     and al, 11111100y
    105.     out 61h, al
    106.  
    107.     sti
    108.  
    109.     ret
    110.  
    111. MakeBeep1 endp
    112.  
    113. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    114. ;                                            MakeBeep2                                              
    115. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    116.  
    117. MakeBeep2 proc dwPitch:DWORD
    118.  
    119.     ; Прямой доступ к оборудованию используя функции
    120.     ; WRITE_PORT_UCHAR и READ_PORT_UCHAR из модуля hal.dll
    121.  
    122.     cli
    123.  
    124.     invoke WRITE_PORT_UCHAR, 43h, 10110110y
    125.  
    126.     mov eax, dwPitch
    127.     invoke WRITE_PORT_UCHAR, 42h, al
    128.     mov eax, dwPitch
    129.     invoke WRITE_PORT_UCHAR, 42h, ah
    130.  
    131.     ; включить динамик
    132.  
    133.     invoke READ_PORT_UCHAR, 61h
    134.     or  al, 11y
    135.     invoke WRITE_PORT_UCHAR, 61h, al
    136.  
    137.     sti
    138.  
    139.     DO_DELAY   
    140.  
    141.     cli
    142.  
    143.     ; выключить динамик
    144.  
    145.     invoke READ_PORT_UCHAR, 61h
    146.     and al, 11111100y
    147.     invoke WRITE_PORT_UCHAR, 61h, al
    148.  
    149.     sti
    150.  
    151.     ret
    152.  
    153. MakeBeep2 endp
    154.  
    155. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    156. ;                                       DriverEntry                                                
    157. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    158.  
    159. DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING
    160.  
    161.     invoke MakeBeep1, TONE_1
    162.     invoke MakeBeep2, TONE_2
    163.  
    164.     ; Прямой доступ к оборудованию используя функцию HalMakeBeep из модуля hal.dll
    165.  
    166.     invoke HalMakeBeep, TONE_3
    167.     DO_DELAY
    168.     invoke HalMakeBeep, 0
    169.  
    170.     mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
    171.     ret
    172.  
    173. DriverEntry endp
    174.  
    175. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    176. ;                                                                                                  
    177. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    178.  
    179. end DriverEntry
    180.  
    181. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    182. ;                                  С Б О Р К А    Д Р А Й В Е Р А                                  
    183. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    184.  
    185. :make
    186.  
    187. set drv=beeper
    188.  
    189. \masm32\bin\ml /nologo /c /coff %drv%.bat
    190. \masm32\bin\link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native %drv%.obj
    191.  
    192. del %drv%.obj
    193.  
    194. echo.
    195. pause
    все исходники у меня у папке C:\RadASM
    компилурую, появляются beep.exe и beeper.sys
    запускаю beep.exe, но динамик вообще не пиищит - вообще ничего не происходит, отлаживаю beep.exe - вроде все ок... но не пищит
    пробовал beeper.sys ставить в C:\WINDOWS\system32\drivers ...
    все-равно не получилось...
    помогите, пожалуйста
     
  2. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Незнаю, что у тебя за проблема, только что проверил всё работает.

    Пример из KmdKit\examples\simple\Beeper

    KmdKit v1.8
    Copyright(C) 2002-2005 Four-F
     
  3. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    о... нашел у себя тоже
    "E:\Necromancer13\Инструменты\ПРочие инструменты\KmdKit\examples\simple\Beeper\scp.exe" - запускаю, но ничего не пищит!!!:dntknw:(
    ну почему? может перезагрузить компьютер после регистрации драйвера чтоли надо?:dntknw:..
     
  4. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    выслал файл другу, у него все пищит, а у меня не пищит:dntknw:
    ну почему это может быть? ='(
     
  5. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    эх... наверно у меня нету динамика... как обидно ='(
     
  6. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Можно проверить есть или нет.
    Отключи монотор от видюхи, при прохождении POST должен услышать характерный звук.
    Если не слишно то значиться нет динамика или не подключен возможно подключен но не правильно.

    Может быть еще вариант. Ну не прячь файлы в десятое колено да еще и с русскими именами.
    Было такое, что из-за этого был такой головняк, два дня мучался, а потом решил упростить путь и всё было ОК (глюк при установке дров на видео, дрова лежали глубоко и папка на русском).
    Вот такая вот ....
     
  7. Mi256

    Mi256 New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2007
    Сообщения:
    116
    Покопай в
    панельуправления\администрирование\упр. компутером
    там может найдется инфа о динамике. Впрочем если ты никогда не слышал пищания динамика при включении компа то скорей всего его нет, нежели дров не работает.
    Даже и если и так - ну что с того? В kmdkit ещо много интересных примеров с использованием драйверов есть, пробуй другие дрова запускать.
     
  8. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    По поводу наличия динамика можно вызвать например юзермодный Beep(1000, 1000); - если динамик есть, то запищит.
     
  9. Necromancer13

    Necromancer13 Виталий

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    202
    Адрес:
    Украина, Берегово
    да, знаю, русские названия часто почему-то не поддерживаются....:)

    не... нету динамика

    не, не завизжал динамик...
    похоже, у меня его нету...
    ну ничего;)
    в KmdKit еще много интересного и так:)
    кстати,
    [offtop]Как вы считаете, что лучше для написания драйверов, Си или АСМ?[/offtop]