Есть intermedia filter driver. Для коннекта с Application сделал exposing WDM Device, взял из примера:
NDIS_STATUS Testdrv0Adapter::OnInitialize
(const KNdisMedium& Medium, KNdisConfig& Config)
{
...
static PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
NdisZeroMemory(MajorFunction, sizeof(MajorFunction));
MajorFunction[IRP_MJ_CREATE] =
MajorFunction[IRP_MJ_CLOSE] =
MajorFunction[IRP_MJ_CLEANUP] =
MajorFunction[IRP_MJ_READ] =
MajorFunction[IRP_MJ_WRITE] =
MajorFunction[IRP_MJ_DEVICE_CONTROL] = IoDispatch;
Status =
NdisMRegisterDevice(
*KNdisMiniDriver::DriverInstance(),
KNDIS_STRING_CONST("\\Device\\MyNdisDevice"),
KNDIS_STRING_CONST("\\DosDevices\\MyNdisDevice"),
MajorFunction,
&m_pDeviceObject,
&m_DeviceHandle
);
...
}
Соответственно, обработка обращений из приложения в
NTSTATUS Testdrv0Adapter::IoDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
...
}
Пример — NuMeg'овский. Все работает.
А вопрос такой: можно ли в качестве девайса для связи с Application использовать класс KDevice?
(у него есть предопределенные обработчики KDevice::Read, KDevice::DeviceControl, да и при работе с NuMega такой подход (если это возможно) будет корректней)
Заранее благодарен за совет.