KS-Eigenschaften
Eine -Eigenschaft stellt eine Funktion oder Steuerelementstatuseinstellung dar, die zu einem Kernelstreamingobjekt gehört, z. B. einem Filter oder einem Pin. Clients eines Kernelstreaming-Minidrivers können Get- und Set-Eigenschaftsanforderungen (KSPROPERTY_TYPE_GET und KSPROPERTY_TYPE_SET) an die Filter und Pins senden, die vom Minidriver instanziiert wurden. Eine Gruppe verwandter Eigenschaften wird als Eigenschaftensatz bezeichnet.
Um einzelne Eigenschaften abzurufen oder festzulegen, rufen Benutzermodusclients die Win32-Funktion DeviceIoControl auf, wobei der dwIoControlCode-Parameter auf IOCTL_KS_PROPERTY festgelegt ist. DeviceIoControl wird in der Microsoft Windows SDK-Dokumentation beschrieben. Kernelmodusclients sollten KsSynchronousDeviceControl aufrufen.
Der Eingabepuffer ist entweder eine KSPROPERTY-Struktur oder ein Wrapper, der eine KSPROPERTY-Struktur und andere für die Anforderung relevante Informationen enthält. Als Reaktion auf diesen Aufruf sendet das Betriebssystem eine IRP an den Klassentreiber.
Wenn der Klassentreiber die resultierende IRP empfängt, ruft er KsPropertyHandler auf. Der Klassentreiber enthält als Aufrufparameter die Adresse der KSPROPERTY-Struktur, die die Besonderheiten der Eigenschaftsanforderung identifiziert. Die Eigenschaftsanforderung wird entweder automatisch auf Klassentreiberebene oder von einem minidriver-bereitgestellten Handler verarbeitet. Unter Kernelstreaming-Eigenschaftssätze finden Sie Referenzinformationen, einschließlich der Vom Klassentreiber verarbeiteten Eigenschaftensätze und die erfordern von Minidriver bereitgestellten Handlern. Ein Minidriver kann den Klassentreiberhandler überschreiben oder erweitern, indem er Rückrufe für eine Eigenschaft bereitstellt, die standardmäßig vom Klassentreiber verarbeitet wird.
Wenn der Minidriver Handler für diese Eigenschaft bereitgestellt hat, schaltet KsPropertyHandler in die Anforderung an den entsprechenden vom Minidriver bereitgestellten Rückruf aus.
Ein Minidriver stellt Zeiger auf seine Eigenschaft zur Unterstützung von Rückrufen in einer Struktur vom Typ KSPROPERTY_ITEM bereit. Ein Minidriver gruppiert ein Array verwandter KSPROPERTY_ITEM Strukturen in einer KSPROPERTY_SET-Struktur . Verschiedene Klassentreibermodelle verfügen über geringfügig unterschiedliche Methoden für den Minidriver, um Eigenschaftensatzdaten für den Klassentreiber verfügbar zu machen. Sie können klassentreiberspezifische Informationen finden, indem Sie den Links unter Kernelstreaming folgen.
Der Miniantrieb bietet auch einen Zeiger auf eine KSPROPERTY_VALUES-Struktur in einer KSPROPERTY_ITEM-Struktur. Die KSPROPERTY_VALUES-Struktur enthält wiederum ein Array von KSPROPERTY_MEMBERSLIST Strukturen. Hier gibt der Minidriver die Größe und den Typ der zulässigen Werte für die Eigenschaft an. Jede KSPROPERTY_MEMBERSLIST-Struktur enthält einen Headermember: Siehe KSPROPERTY_MEMBERSHEADER Informationen zum Angeben von rechtlichen Bereichen oder Werten für eine Eigenschaft, die Ihr Minidriver unterstützt. Eine Implementierung dieses Mechanismus finden Sie auch im Testcap-Beispiel im Microsoft Windows Driver Kit (WDK).
Um die Größe und den Typ zulässiger Werte für eine Eigenschaft zu melden, gibt der Klassentreiber eine KSPROPERTY_DESCRIPTION-Struktur als Antwort auf eine KSPROPERTY_TYPE_BASICSUPPORT Anforderung des Clients zurück.
Der Klassentreiber kann der KSPROPERTY_DESCRIPTION-Struktur eine Liste mit KSPROPERTY_MEMBERSHEADER Strukturen anfügen.