Hello All, First post here :-)May I ask if anyone have a link / information about the IRPs that an upper filter must monitor to copy the audio stream.
I know of the existence of IO have read about IRP_MJ_DEVICE_CONTROL and IRP_MJ_WRITE / READ but I havn't found any information about the format of these IRPs. I am assuming theres a command payload in the buffer of the IRP that the audio driver would interpret and then send commands to the minidriver.
I noticed in the inputbuffer the sample rate information e.g.: Filter - IRP_MJ_DEVICE_CONTROL Filter - Mode:KernelMode UserBuffer Address = 0xEDF5C1E8Stack Func = 14, 0 Flags(0x00000000) Parameters (OutputBufferLength =82, InputBufferLength=24, IoControlCode=002F0003 (IOCTL_KS_PROPERTY), Type3InputBuffer=0xEDF5C1C8 ----------------------------------------------------------------
20 C9 58 1D - 9B AC CF 11 02 00 00 00 - 02 00 00 00 52 00 00 00 - 00 00 00 00 61 75 64 73 - 00 00 10 00 01 00 00 00 - 00 00 10 00 81 9F 58 05 - 56 C3 CE 11 01 00 02 00 -*22 56* 00 00 00 00 00 00 - 03 00 00 00 00 00 00 00 - 00 00 00 00 A5 90 1C ED - 60 E8 5F 863C 18 ---------------------------------
/from MSVAD sample /minidriver SET FORMAT PCM->wFormatTag = WAVE_FORMAT_PCM PCM->nChannels = 2 PCM->nSamplesPerSec = *22050 * PCM->nAvgBytesPerSec = 88200 PCM->nBlockAlign = 4 PCM->wBitsPerSample = 16 PCM->cbSize = 0 ------------------------------------ MSVAD: New Format:*22050* but I noticed when first initialized it's 60 49 13 8C - AD 51 CF 11 04 00 00 00 - 01 00 00 00 B8 00 00 00 - 02 00 00 00 00 00 00 00 - 00 00 00 00 80 00 00 AA - 00 38 9B 71 80 00 00 AA - 00 38 9B 71 BF 01 00 AA -*00 55* 59 5A 20 00 00 00 -64 00 00 00 58 00 00 00 - 00 00 00 00 61 75 64 73 - 00 00 10 00 01 00 PCM->nSamplesPerSec = 64000 ???????? 0x5500 != 64000So the does anyone know of a link to the documentation of how the IRP to the audio driver works? Or any tips on how to process the IRPs to get meaningful information? e.g. Audio format
Cheers Obble.