[wdmaudiodev] Re: How can I open my virtual audio driver and send IOCTL to it?

  • From: "Mathieu Routhier" <mrouthier@xxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 9 Jun 2004 13:33:41 -0400

It looks like you're doing it the right way.  Try calling CreateFile
with the following parameters instead:

CreateFile(
filename
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

Mat

-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of hollychen
(ê?ø?Ô´=Ñаl)
Sent: Wednesday, June 09, 2004 12:35 PM
To: wdmaudiodev
Subject: [wdmaudiodev] How can I open my virtual audio driver and send
IOCTL to it?

I'm a newbie in WDM. I wanna send IOCTL to my virtual audio driver,
but I failed to open my driver in user-mode application.
 
In audio driver side, I registers an interface,
 
AddDevice 
(
IN  PDRIVER_OBJECT          DriverObject,
IN  PDEVICE_OBJECT          PhysicalDeviceObject 
)
{
   ...
    ntStatus = 
        PcAddAdapterDevice
        ( 
            DriverObject,
            PhysicalDeviceObject,
            PCPFNSTARTDEVICE(StartDevice),
            MAX_MINIPORTS,
            0
        );
    ...
    ntStatus = IoRegisterDeviceInterface(PhysicalDeviceObject,
&GUID_DEVINTERFACE_BT_AUDIO, NULL, &ifname);
    ...
   ntStatus = IoSetDeviceInterfaceState(&ifname, TRUE);
}

 
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////
 
In application side,
 
HDEVINFO info = SetupDiGetClassDevs(&GUID_DEVINTERFACE_BT_AUDIO, 
  NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
 ... 
if (SetupDiEnumDeviceInterfaces(info, NULL, &GUID_DEVINTERFACE_BT_AUDIO,
0, &ifdata))
{   
  ...
  SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &needed,
NULL);  
  
  PSP_INTERFACE_DEVICE_DETAIL_DATA detail =
(PSP_INTERFACE_DEVICE_DETAIL_DATA) malloc(needed);  
  SP_DEVINFO_DATA did = {sizeof(SP_DEVINFO_DATA)};  
  detail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
  
  if (!SetupDiGetDeviceInterfaceDetail(info, &ifdata, detail, needed,
NULL, &did))   
  {  ...  }    
  ...
  strcpy(fileName, detail->DevicePath);
  ... 
 }  
 
 SetupDiDestroyDeviceInfoList(info);

  //////////////////////////////////////////////////// 
 
 HANDLE hdevice = CreateFile(fileName, GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, 0, NULL);
 
The CreateFile() always return 2 (ERROR_FILE_NOT_FOUND).
 
What's the problem with my code?
Any suggestions/hints will be much appreciated!
 
Holly
 

******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.de/

Other related posts: