Вообщем то хукаю запросы в ядре к \device\afd (не спрашивайте зачем D).
Что то типа
if (IoControlCode == 0x12017 /*recv*/) {
st = Original_NtDeviceIoControlFile(
FileHandle, Event, ApcRoutine, ApcContext, IoStatusBlock, IoControlCode,
InputBuffer, InputBufferLength, OutputBuffer, OutputBufferLength
);
if (st == STATUS_PENDING && Event != NULL) {
ZwWaitForSingleObject(Event, FALSE, NULL);
st = IoStatusBlock->Status;
}
if (NT_SUCCESS(st)) {
Trace("%p", IoStatusBlock->Information);
}
}
Собственно, в IoStatusBlock->Information мусор. Однако, в юзер приложении (сразу же после вызова) всё нормально, количество принятых байт. Что я делаю не так ?