Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De minidriver levert een KSPIN_DESCRIPTOR structuur voor elk type pin dat moet worden geïnstantieerd. Een pindescriptorstructuur wordt een Pin Factory genoemd. Elke pin factory kan een of meer pin-exemplaren van een bepaald type instantiëren. Een pin factory bevat verschillende matrices die het type pin beschrijven dat door deze descriptor wordt geïnstitueert.
De minidriver specificeert een of meer KS-categorieën waartoe pinnen behoren die door deze descriptor zijn gemaakt in het lid Categorieën van KSPIN_DESCRIPTOR. KS gebruikt categorieën om pin-exemplaren te verbinden wanneer er een filtergrafiek wordt gemaakt. De KSPROPERTY_TOPOLOGY_CATEGORIES eigenschap vraagt op naar de reeks functionele categorieën die een stuurprogramma ondersteunt.
Een minidriver biedt een INF-bestand dat een of meer pin-apparaatnamen registreert. Tijdens de installatie laadt het besturingssysteem de namen en bijbehorende categorieën in het systeemregister. Clients kunnen vervolgens create-file-aanroepen maken met deze apparaatnamen om pinnen te instantiëren.
Clients in de gebruikersmodus roepen de Win32-functie CreateFile aan met de naam van het apparaat. '\\.\filters\audio\default renderer' kan bijvoorbeeld een koppeling zijn naar het audioapparaat dat is geconfigureerd voor standaarduitvoer. Clients in de kernelmodus roepen ZwCreateFile aan vanuit de kernelmodus. Nadat de routine voor het aanmaken van bestanden een bestandshandle heeft geretourneerd, communiceren KS-clients met pinnen via KS-eigenschappen.
In de pin descriptor structuren legt de minidriver arrays van KSPIN_INTERFACE structuren en KSPIN_MEDIUM structuren vast die de interfaces en media specificeren die worden ondersteund door die pin factory. KSPIN_DESCRIPTOR is ook waar de minidriver de geldige gegevensbereiken specificeert voor pinnen die door die fabriek zijn gemaakt. Dit doet u door een aanwijzer op te geven voor een matrix van KSDATARANGE-structuren . De minidriver specificeert ook de richtingen van de gegevens- en communicatiestromen voor nieuwe pinnen die door deze pin factory zijn gemaakt.
Een minidriver maakt runtimedetectie van pin factory's mogelijk door de KSPROPSETID_Pin eigenschappenset te ondersteunen.
Als u een pinverbinding wilt maken, roept u de KsCreatePin-routine aan. In deze aanroep geeft de minidriver een aanwijzer door aan een structuur van het type KSPIN_CONNECT die de aangevraagde verbinding beschrijft. Wanneer er een pin wordt gemaakt, ziet het filter de nieuwe pin als een bestandsobject dat onderdeel is van het bestandsobject van dat filter.
De minidriver roept KsValidateConnectRequest aan met de descriptorstructuren die zijn opgegeven in de resulterende IRP_MJ_CREATE. Deze routine valideert deze structuren en retourneert een aanwijzer naar de verbindingsstructuur en het hoofdbestandsobject.
Minidrivers gebruiken de DataFlow en Communication leden van KSPIN_DESCRIPTOR structuren om de volgende pindetails te definiëren:
IRP-bronpin versus IRP-sinkpin
Een IRP-bronpin geeft IRP's uit; een IRP-sinkpin ontvangt deze. Een client in de gebruikersmodus verzendt I/O-aanvragen rechtstreeks naar een IRP-sinkpin via de relevante bestandsingang. Clients gebruiken KSPROPERTY_PIN_COMMUNICATION om te controleren of gegevens in of uit een pin-type stromen.
Gegevensbronpin versus gegevenssinkpin
Een gegevensbronpin is een uitvoerpin op een filter; een gegevensverwerkingpin is een invoerpin. De eigenschap van het zijn van een gegevensbron of sink is onafhankelijk van een IRP-bron of sink. De client kan bijvoorbeeld een gegevensbron, IRP-sinkpin, koppelen aan een gegevensdoel, IRP-bronpin. Clients gebruiken KSPROPERTY_PIN_DATAFLOW om te controleren of gegevens in of uit een pintype stromen.
Bij het beëindigen van een verbinding moet het handvat van de bronpin worden gesloten voordat het onderliggende bestandsobject wordt vernietigd. Als de bronpin afhankelijk is van middelen die door de afvoerpin worden geleverd, is het de verantwoordelijkheid van de afvoerpin om de bronpin te waarschuwen wanneer de verbinding wordt beëindigd.
Een client communiceert met een kernel-streaming-pin door de DeviceIoControl-routine aan te roepen (beschreven in de Microsoft Windows SDK-documentatie) met IRP_MJ_DEVICE_CONTROL. De aanroeper identificeert de aanvraag door de I/O-besturingscode die wordt geplaatst op Parameters.DeviceIoControl.IoControlCode in de I/O-stacklocatiestructuur.
Ter ondersteuning van aanvragen levert de minidriver een aanwijzer naar een KSDISPATCH_TABLE structuur in een aanroep van KsAllocateObjectHeader.
Schrijfaanvragen bevatten een aanwijzer naar een matrix van KSSTREAM_HEADER structuren die op hun beurt aanwijzers bevatten om gegevens te streamen. Leesaanvragen bevatten een aanwijzer naar een matrix met lege headerstructuren waar de leesgegevens moeten worden geretourneerd.