mirror of
https://github.com/opnsense/src.git
synced 2026-05-25 18:54:02 -04:00
ndis_timercall() in NdisMInitializeTimer(), we can't use the raw function pointer. This is because ntoskrnl_run_dpc() expects to invoke a function with Microsoft calling conventions. On i386, this works because ndis_timercall() is declared with the __stdcall attribute, but this is a no-op on amd64. To do it correctly, we have to generate a wrapper for ndis_timercall() and us the wrapper instead of of the raw function pointer. Fix this by adding ndis_timercall() to the funcptr table in subr_ndis.c, and create ndis_findwrap() to extract the wrapped function from the table in NdisMInitializeTimer() instead of just passing ndis_timercall() to KeInitializeDpc() directly. |
||
|---|---|---|
| .. | ||
| cfg_var.h | ||
| hal_var.h | ||
| kern_ndis.c | ||
| kern_windrv.c | ||
| ndis_var.h | ||
| ntoskrnl_var.h | ||
| pe_var.h | ||
| resource_var.h | ||
| subr_hal.c | ||
| subr_ndis.c | ||
| subr_ntoskrnl.c | ||
| subr_pe.c | ||
| subr_usbd.c | ||
| usbd_var.h | ||
| winx64_wrap.S | ||