Не судите строго, при дизассемблировании драйвера получился следующий листинг: Код (Text): ; int __stdcall start(struct _DEVICE_OBJECT DeviceObject) .text:0001175B public start .text:0001175B start proc near .text:0001175B .text:0001175B DeviceObject = _DEVICE_OBJECT ptr -4 .text:0001175B .text:0001175B push ebp .text:0001175C mov ebp, esp .text:0001175E add esp, 0FFFFFFFCh .text:00011761 lea eax, [ebp+DeviceObject] .text:00011764 push eax ; DeviceObject .text:00011765 push 0 ; Exclusive .text:00011767 push 0 ; DeviceCharacteristics .text:00011769 push 22h ; DeviceType .text:0001176B push offset DeviceName ; DeviceName .text:00011770 push 0 ; DeviceExtensionSize .text:00011772 push [ebp+DeviceObject.NextDevice] ; DriverObject .text:00011775 call IoCreateDevice .text:0001177A cmp eax, 0 .text:0001177D jnz short locret_117C4 .text:0001177F push offset DeviceName ; DeviceName .text:00011784 push offset SymbolicLinkName ; SymbolicLinkName .text:00011789 call IoCreateSymbolicLink .text:0001178E cmp eax, 0 .text:00011791 jnz short loc_117BB .text:00011793 mov eax, [ebp+DeviceObject.NextDevice] .text:00011796 mov dword ptr [eax+34h], offset _IoDeleteService .text:0001179D mov dword ptr [eax+38h], offset _IofCompleteRequest .text:000117A4 mov dword ptr [eax+40h], offset _IofCompleteRequest .text:000117AB mov dword ptr [eax+70h], offset sub_1164D .text:000117B2 mov eax, 0 .text:000117B7 leave .text:000117B8 retn 8 .text:000117BB ; --------------------------------------------------------------------------- .text:000117BB .text:000117BB loc_117BB: ; CODE XREF: start+36j .text:000117BB lea eax, [ebp+DeviceObject] .text:000117BE push eax ; DeviceObject .text:000117BF call IoDeleteDevice .text:000117C4 .text:000117C4 locret_117C4: ; CODE XREF: start+22j .text:000117C4 leave .text:000117C5 retn 8 .text:000117C5 start endp Вопрос - каким образом происходит вызов sub_1164D?