Kernel streaming architecture supports interaction between minidrivers and user-mode clients through properties, events, and methods. Using these constructs, clients of a KS object can get and set object state, register notification callbacks for events, and execute object methods.
Clients request all three operation classes in a standardized manner. The client provides an alias structure of KSIDENTIFIER in a call to DeviceIoControl (described in the Microsoft Windows SDK documentation) or KsSynchronousDeviceControl.
Functionally similar operations are grouped together in a set. Each property, event, or method set is identified by a GUID. Microsoft defines GUIDs for standard technology-specific operations. Minidrivers can define their own GUIDs for custom operations.
Each operation is specified by an ID number within the set.
Operation-specific identification data
Certain property requests require additional data. For example, pins on an audio device support the KSPROPSETID_Audio property set. An audio pin may support several different audio channels. Clients getting or setting certain KSPROPSETID_Audio properties must specify the audio channel to which the request applies. Event and method requests do not require additional data.
Microsoft-defined set GUIDs and identifiers for general-purpose operations are located in the header ks.h. Standard GUIDs and identifiers for particular classes of multimedia technology are found in ksmedia.h.
AVStream minidrivers support properties, events, and methods by providing a pointer to a KSAUTOMATION_TABLE structure in the relevant KSFILTER_DESCRIPTOR or KSPIN_DESCRIPTOR_EX. A KSAUTOMATION_TABLE contains a pointer to an array of KSPROPERTY_SET objects. To learn more, see Defining Automation Tables.
These sections contain information about how minidrivers support the three operation classes: