The "directks" IS NOT a deriver?

xxxxx@gmail.com wrote:

It is just RUN user mode, and provides a interface layer to the filters which reside in the kernel .

Correct. It is a library that allows user-mode access to kernel
streaming drivers.

But who are these filters? Are these filters included in the drivers whick below to the " kmixer.sys" ? And is also the core issue of the ASIO which means direct access to the hardware ? Because the stream does not pass through the " kmixer.sys" ?

Virtually all streaming drivers (meaning audio and video) are kernel
streaming drivers. Kernel streaming was introduced in Windows 2000, so
it is a stable technology. A kernel streaming driver creates one or
more “filters” (that term coming from DirectShow), each of which exposes
one or more “pins”. The KS framework creates connections between the
pins to allow data to pass.

Whether kmixer.sys is involved or not depends in large part on your
operating system. Older systems use kmixer.sys. Vista and beyond do not.

For example , If there is ASIO driver for a USB audio device , then it means that "these filters? " is in the "usbaudio.sys " ?

Usbaudio.sys is a kernel streaming driver. It exposes KS filters for
any USB audio devices.

If this is true, How to find the programing interface of the "usbaudio.sys " ?

It is a kernel streaming driver. The programming interface is through
the kernel streaming APIs. Have you tried Google or MSDN even once?

Most user-mode applications access these filters through the
“ksproxy.ax” DirectShow wrapper, by using the system device enumerator
(CLSID_SystemDeviceEnum) to find the device and return an IBaseFilter
interface. From there, you can ask for an IKsControl interface and send
kernel streaming requests directly. DirectKS provides another way to
gain access to those requests.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.