Проблема с ф-ций KeGetCurrentIrq1() из HAL.DLL В общем не могу понять что за синтаксис вот теперь насмотрелся на ваши исходники и теперь не знаю как вызвать свою ф-цию В общем проблема вот в чем... Использую библеотеку "Four-F" то есть все на асме и мне стала нужна ф-ция KeGetCurrentIrq1() которой в его библеотеки нет Теперь хочу вызвать самостоятельно но запутался посмотрел его код и вижу окончание KfLowerIrql@4 KfRaiseIrql@4 а здесь вобще восьмерка KeReleaseQueuedSpinLock@8 Вот теперь пойми как её её вызвать с четверкой или восьмеркой или другое? Как подобные ф-ций вызывать?
<font color="gray][ ABC</font><!--color--><font color="gray]: и мне стала нужна ф-ция KeGetCurrentIrq1() которой в его библеотеки нет ]</font><!--color--> KeGetCurrentIrq1 действительно нет, зато есть KeGetCurrentIrql <font color="gray][ ABC</font><!--color--><font color="gray]: Вот теперь пойми как её её вызвать с четверкой или восьмеркой или другое? ]</font><!--color--> Без четверки и без восьмерки и читать про fastcall и декорирование имен функций. Я даже об этом писАл в 5-ой части. Код (Text): DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING local Irql:DWORD invoke KeGetCurrentIrql invoke DbgPrint, $CTA0("IRQL = %d\n"), eax fastcall KfRaiseIrql, DISPATCH_LEVEL mov Irql, eax invoke KeGetCurrentIrql invoke DbgPrint, $CTA0("IRQL = %d\n"), eax ;; . . . fastcall KfLowerIrql, Irql invoke KeGetCurrentIrql invoke DbgPrint, $CTA0("IRQL = %d\n"), eax mov eax, STATUS_DEVICE_CONFIGURATION_ERROR ret DriverEntry endp
Долго и вдумчиво, до полного просветления читать документацию про calling conventions (stdcall, cdecl, fastcall) и name mangling.