Такая трабла - добавляю в IDT гейт, когда дёргаю прерывание - BSOD, в хендлере тока iretd. Код (Text): cli mov EAX, cr0 push EAX and EAX, 0FFFEFFFFh mov cr0, EAX sidt IDT mov EDX, IDT.Base add EDX, 2A8h lea ECX, IntHandler mov IDT_DESC.LSW_Handler, CX shr ECX, 16 mov IDT_DESC.Selector, CS mov IDT_DESC.MSW_Handler, CX mov IDT_DESC.Flags, 0E600h lea EDI, IDT_DESC mov EAX, [EDI] mov [EDX], EAX mov EAX, [EDI+4] mov [EDX+4], EAX pop EAX mov cr0, EAX sti
покажи структуру IDT_DESC, может с полями напутал. mov EAX, cr0 push EAX and EAX, 0FFFEFFFFh mov cr0, EAX это сброс какого бита? влом смотреть
Great вроде сброс WP в реестр лень лезть, type TIDT_DESC=packed record LSW_Handler: word; Selector: word; Flags: word; MSW_Handler: word; end; уж извиняйте прога на дельфе - Ring0Callback