Sysdriver: How to capture Input data and play user audio application data

Yes sir. I created symbolic link into the primary device object . In my application I am trying to access that device to send/receive data using my IOCTL. In my application, i am using CM_Get_Device_Interface_List() to get the device name from GUID, then I am calling CreateFile with OPEN_EXISTING to open my device . But CreateFile (hDev ==-1) Is returned with error 2. Not sure what is the problem. I tried debugging but could not. Please help me sir. cr = CM_Get_Device_Interface_List( InterfaceGuid, NULL, deviceInterfaceList, deviceInterfaceListLength, CM_GET_DEVICE_INTERFACE_LIST_PRESENT); if (cr != CR_SUCCESS) { } hr = StringCchCopy(DevicePath, BufLen, deviceInterfaceList); if (FAILED(hr)) { } hDev = CreateFile( DevicePath, GENERIC_READ , 0, NULL, OPEN_EXISTING, 0, NULL );

Did you print out the file name, to see if it looks like a hardware ID string? Showing snippets like this isn’t enough. It is so easy to make character set mistakes, and we can’t see that unless we can see the declarations of deviceInterfaceList and DevicePath. Where did you get BufLen? Where did you get deviceInterfaceListLength?

You probably want GENERIC_READ|GENERIC_WRITE, and you may need to allow sharing, with FILE_SHARE_READ|FILE_SHARE_WRITE, but that won’t cause ERROR_FILE_NOT_FOUND.

Thank you sir, I could able to communicate with driver through IOCTL. I could able to get notifications of fake speaker & Mic also, if any application uses them. My process application is ready with Real mic data I am stuck at: 1.From which buffer audio engine reads the data and provide it to skype (By searching forums, we have to copy our data to generate sine buffer. Isnt it relate to DMA?, If not , can I directly copy my data to that buffer? 2. Can I create a separate cyclic buffer to copy my real data? If so, Can you suggest me, where I have to create my cyclic Buffer so that audio engine can read from it? In which function of sysvad, we can get calls from audio engine for data filling? can you please give some explanation about them sir!!!

1.: You couldn’t figure this out from the code? In CMiniportWaveRTStream::WriteBytes, it calls GenerateSine to put new microphone data into m_pDmaBuffer. If there were real hardware involved, then yes, there would be DMA going on. In this case, you are pretending to be the hardware.

2.: That IS the cyclic buffer. That’s it. You can trace its usage in the module. Because its timing is so tight, you may want your own buffer to communicate with your app, although you might be able to do both ends with one buffer.

Thank you for your help sir, I could able to send my audio to sysvad and can take from sysvad too. I have created a circular buffer with below function. Somewhere in the source said that this function will create non contiguous memory. CS_Frame = (BYTE*)ExAllocatePoolWithTag( NonPagedPoolNx, m_FrameSize, SYSVAD_POOLTAG1); But, it is working properly as of now. Is there any problem with this call for creating memory,sir?

If there is no hardware involved, then non-contiguous memory is not a concern. I tend to use “operator new”, but that’s just a wrapper around ExAllocatePoolWithTag.

By the way, if “CS_Frame” is a class member variable, then you should think about using the m_ prefix. That’s the only remnant of Hungarian notation that I still cling to, just because otherwise it’s not clear where the variable is defined.

Yes sir, Now Sysvad’s fake mic and speaker is able to communicate with the processing application. I want to get Digital signature for driver in order to avoid test-sign, sir.

As you suggested earlier, there are two ways to get certification from Microsoft.

  1. WHQL
    2.Attestation signing

Which service is preferable, sir?. I am completely new to this,sir. And I am learning about this.

So far :
I am understanding about HLK installations and tests.
If the driver has passed all the test cases which are provided by HLK, will it get digital signature,sir?
Else, I have to submit the package after test to dashboard.

 Can you guide me the way to get certification!!!!! Or Please paste any reference link about certification

Thank you

Google is your friend, sir: https://www.osr.com/blog/2019/06/03/three-plus-years-later-driver-signing-still-baffles/

Peter

Yes Peter, thanks for the link.

              Thank you very much for you support till now, @Tim_Roberts. 
              Sysvad is working fine with less delay ~60ms delay. But, while installing in some PCs(Windows 10), blue screen error is coming  and not able to load the actual PC. I can able resolve but it should not happen.

                1.Can you please suggest me the test cases to pass for sysvad to confirm whether sysvad is working properly or not. So that I can able to test that on multiple PCs. If any document or link available. Please paste here.

               2.I could able to remove unnecessary mic and speaker pairs. But I am not able to figure out, how to remove APO?

                 Please post your suggestions for the above!!

Thanks,
Dinesh

… blue screen error is coming … I can able resolve but it should not happen.

No, it shouldn’t happen. Are you saying you fixed this, or are you asking for assistance?

Can you please suggest me the test cases to pass?

Do you have a test program that routes data through your sysvad and forwards it to/from the system microphone and speakers? If you’re getting sound, that’s means a lot of stuff is working. Does your device look like a real device in the sound control panel? There are WHQL tests for audio devices, if you want to go that far. They have some very picky requirements for latency and response time.

I could able to remove unnecessary mic and speaker pairs. But I am not able to figure out, how to remove APO?

Why do you have to remove anything? Where did these come from? Are you saying you don’t know how to eliminate the APO from the sysvad installation package? APOs are all about the registry. If you remove their registration parts from the INF, then they won’t be installed.

Thanks sir, No, it shouldn’t happen. Are you saying you fixed this, or are you asking for assistance? Doing some efforts after blue screen, I could able to load my os. But, my question was how to avoid blue screen. As of now, it is working fine. As per attestation signing: I have read documents about it and got to know the steps. I want to know about the validity of signature of driver. Once the driver got signature, can I use the driver for a life time or renew the digital sign of driver after some period of time. If I am not wrong, driver signature time validity does not depend on EV certificate validity. And, we have to renew the ev certificate after it has expired. Can you tell me about it sir!!! I dont have any prior experience.

driver signature time validity does not depend on EV certificate validity

This is correct.

The EV Cert only has to be valid at the time it was used to sign the driver (package). That’s one reason you time-stamp your signature. If the cert later expires, that’s fine. The signature on the driver demonstrates that the owner of the EV Cert created/signed the driver on the specified date, and as of that date, the certificate was valid and therefore (as of that date) the owner of the EV Cert was known and “trusted” (within the limits of the word “trust” that apply to EV Certs… let’s not debate this fellows, OK?)

Peter

Thank you for your explanation,sir

Hi Sir,

I am able to configure sysvad fake mic and speaker for multiple audio applications. For example, In VLC media player I can adjust the volume at volume control. But I am not able to adjust the volume in control panel. Since we cannot adjust volume in all audio applications, I want to adjust the volume from control panel. To get that, anything to be added to driver, sir.

Are you handling volume controls in your fake microphone and speaker? Sysvad advertises support for volume and mute, but it doesn’t do anything with them. The EASIEST thing to do is to remove the volume and mute nodes from your topology entirely. If a device does not advertise mute and volume, then the Audio Engine will provide them and handle it automatically.

Yes sir, But, nodes are already NULL in given topology. Is below function you were suggesting me delete?Otherwise, can you paste here the function name, which needs to be deleted

//=============================================================================
static
PCFILTER_DESCRIPTOR SpeakerTopoMiniportFilterDescriptor =
{
0, // Version
&AutomationSpeakerTopoFilter, // AutomationTable
sizeof(PCPIN_DESCRIPTOR), // PinSize
SIZEOF_ARRAY(SpeakerTopoMiniportPins), // PinCount
SpeakerTopoMiniportPins, // Pins
sizeof(PCNODE_DESCRIPTOR), // NodeSize
0, // NodeCount
NULL, // Nodes
SIZEOF_ARRAY(SpeakerTopoMiniportConnections), // ConnectionCount
SpeakerTopoMiniportConnections, // Connections
0, // CategoryCount
NULL // Categories
};

Sigh. Do you know how KS properties work? The client asks, “do you support this?,” and if you say yes, it know it can use the property. So, you need to find where it is responding to KSPROPERTY_AUDIO_VOLUMELEVEL and stop it from doing so.

Thank You sir for helping me out,

     All voulme controls are working fine. I got the attestation signing for the driver and it is getting installed in few win10 x64 laptops and working properly. But in few systems, even it is installed, virtual audio driver is not visible in Volume control.

My Virtual Driver name is ClearVoiceMvns
In device manager the under** sound&Volume&cgame controller** . It is in yellow mark. And in details of the driver, it is error number 52. And it is not able to recognize the digital signature.

Windows cannot verify the digital signature for the drivers required for this device. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. (Code 52)

As I searched in net, it is because of windows software updates. After disabling secure boot, it is working properly.
Can you suggest me any way, so that it can able to recognize the digital sign without disabling the secure boot?

Advance Thanks

HI sir, I could able to resolve that signing problem by referring some forums.

Can we change sysvad speaker and mic icon using programically or inf file? or Any other is way has to be followed. can you suggest me,sir