|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 5, 2002 05:47:26 Необходимо сделать драйвера под все ОС семейства Windows для своего железа (ISA-карта - сторожевой таймер), в программировании на Асме под Винды полный нуль (в ДОСе в основном), поэтому взял книгу - Язык ассемблера: уроки программирования Рудакова и Финогенова. Скачал Win98 DDK, пропатчил MASM до 6.14, пробую скомпилить пример из книги, заваливается на линкере с ошибкой : fatal error LNK1190: invalid fixup found, type 0x0001, вопрос в какую сторону копать???? В Инете про нее пишут, типа был изменен OBJ файл, перекомпилите еще раз, пробовал результат нулевой. Железку сочинил, изготовили партию, все воркает, а драйвера написать некому, приходиться самому париться. Если интересно глядеть www.openhardware.ru -> WatchDog Timer. Уже после постинга сюда пробовал разобраться, выходит следующее, если при линковке, использовать все ключи описаные в файле vmyd.lnk, то получаю VxD без проблем, если в коммандной строке указать файл vmyd.def, то даже при отсутствии в нем инфы, получаю такую же ошибку. Знаю что ошибка ламерская, а понять куды копать не могу. |
|
|
Дата: Дек 6, 2002 09:40:25 С компиляцией разобрался, нуно было ставить нужные ключи к линкеру. Появился новый вопрос, как узнать в какой каталог по умолчанию поставлена Винда??? Есть ли какой-нить стандартный макрос/функция для этого?? Надо для чтения VxD-шником конфигурации из файла, который будет лежать в %WinDir%\ |
|
|
Дата: Дек 6, 2002 10:47:32 · Поправил: Aquila GetWindowsDirectory |
|
|
Дата: Дек 6, 2002 17:14:39 2Aquila: спасибо, буду пробовать. |
|
|
Дата: Дек 14, 2002 17:11:40 Для написания драйвера использую VmWare 3.2 под ASPLinuxом 7.3, в Варьке крутиться Windows 98SE, нашел интересный или глюк или фичу. В процессе загрузки VxDшника, когда он инициализируется (Device_Init), в цикле перебором портов ввода-вывода ищу свое устройство, использование in/out в этом месте рушит VmWare полностью, процесс сдыхает с диким криком. Может кому пригодиться. Попутно вопрос, так вообще можно делать?? Для примера кусок кода: v_ok_go4: mov AL,05h inc DX inc DX ; out DX,AL ; Рушит VmWare3.2 напрочь dec DX dec DX ; in AL,DX cmp AL,0h skip |
|
|
Дата: Дек 15, 2002 16:35:26 Как повеситься на WM_TIMER для периодического обращения к своей железке?? Есть ли другие способы?? |
|
|
Дата: Янв 3, 2003 03:54:28 Аноним Thread создавать не пробовали ? |
|
|
Дата: Янв 3, 2003 03:58:01 Аноним Создаещ поток с приоритетом каким хочещ(Надо) и он с твоей железкой "автономно работает" |
|
|
Дата: Янв 3, 2003 04:01:15 Я к стати в Win98 просто "out ..." писал и ничего прокатывало. теперь надо под 2000 не прокатит. |
|
|
Дата: Янв 3, 2003 17:03:46 Поток создавать через VMMCreateThread попробовал, но не получилось, рушит Винды, посоветовали использовать другую функцию, если есть рабочий пример создания или ссылка где почитать, бросьте плиз. |
|
|
Дата: Янв 3, 2003 19:24:02 VMMCreateThread VMMCall VMMCreateThread, <initial_ss, initial_esp, initial_cs, initial_eip, initial_ds, initial_es, ThreadType, InitCallback, RefData> or eax, eax jz thread_not_created Creates a protected mode thread in the system virtual machine and starts it executing in ring 3 at the instruction specified by CS:EIP. Uses all registers and Flags. //------------------------------------------------------ include vmm.inc mov edi, ThreadHandle mov eax, Create_Thread VMMCall System_Control //------------------------------------------------------ // Thread_Init include vmm.inc mov edi, ThreadHandle mov eax, Thread_Init VMMCall System_Control //------------------------------------------------------ // Destroy_Thread include vmm.inc mov edi, ThreadHandle mov eax, Destroy_Thread VMMCall System_Control Смотрел MSDN ? |
|
|
Дата: Янв 4, 2003 13:28:10 Вот мой фрагмент, выдрал из примера (его можно найти поиском VMMCreateThread на ya.ru) push eax ; random sh!t push offset WDT_Callback ; address of callback routine push 'WDT' ; ID push 187h ; ES register push 187h ; DS register push offset WDT_Thread_Counter_Clear ; EIP - address of Thread proc push 17fh ; CS register push offset tstack ; ESP - address of Thread stack push 187h ; SS register VxDCall VMMCreateThread ; create thread! add esp, 24h ; clean stack test EAX, EAX ; thread successfuly created? je thread_install_fail В WDT_Callback BeginProc WDT_Callback clc ret EndProc WDT_Callback Общая ошибка защиты, где-то я проперся. MSDN естественно смотрел, думал, но поймал траблы. |
|
|
Дата: Янв 4, 2003 23:30:15 CWinThread *pThread; UINT modeling_in_progress; CMainFrame::CMainFrame() { pThread=NULL; modeling_in_progress=0; } void CMainFrame::OnButtonMod() { if(!pThread){ pThread = AfxBeginThread(ThreadFunc,GetActiveView(), THREAD_PRIORITY_NORMA L /*THREAD_PRIORITY_BELOW_NORMAL*/ /*THREAD_PRIORITY_ABOVE_NOR MAL*/ /*THREAD_PRIORITY_HIGHEST*/); pThread->m_bAutoDelete = FALSE; modeling_in_progress=1; }else{ DWORD exitcode; if(pThread){ g_Exit.SetEvent(); do GetExitCodeThread(pThread->m_hThread, &exitcode); while(exitcode == STILL_ACTIVE); delete(pThread); pThread=NULL; modeling_in_progress=0; } } } UINT ThreadFunc(LPVOID lpv){ DWORD ms_cur ,ms_end; ms_end = 0; while(true){ ms_cur = GetTickCount(); //-------------------------------- // if(WaitForSingleObject(g_Exit,0)==WAIT_OBJECT_0){ // return 1; // } //-------------------------------- if(ms_end<=ms_cur){ ms_end = GetTickCount()+200; var_ms++; //================================================================// // öèêë 200 ms // var_ms = 5 ïðîøëà 1 sek //================================================================// Çäåñü îáðîùàåøúñÿ ê ñâîåé æåëåçêå //-------------------------------- } return 0; } Åñëå íóæíî áîëåå òî÷íî òî ÷åðåç MMTimer. |
|
|
Дата: Янв 6, 2003 13:45:48 Насколько я понял из вашего примера, это программа на С, которая создает нить для для выполнения определенных действий. Немного не подходит, поскольку все надо сделать в виде VxD на Асме. |
|
|
Дата: Фев 15, 2003 02:34:19 -Господа хорошие, осчасливте ссылкой, где слить ДДК для винды 98-ой можна, -ибо на Микрософте хрен, извиняюсь а не ДДК, -слиcя весь... :( -А насчёт сторожевиков так их я думаю, и в самом железе предостаточно, и насколько мне известно ХР с этим делом управляется, -мой знакомый как-то исхитряется холодный ребут через видяху,устраивать там если какой-то таймер хитро запустить и не ресэтить своевременно, то -упс... ай дид ит аген... -винда падает, правда потом постит какой-то мессадж с предЪявами к видеодрайверу -мол не успел рефреш сделать... -так-что под PCI может и делать ничаго ненадо будет :)) dovebox@yandex.ru |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.098 |