Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Framework-köobjekt representerar I/O-köer, som är containrar för I/O-begäranden som en drivrutin tar emot. Varje drivrutin kan skapa en eller flera I/O-köer för varje enhet. Ramverksköobjektet definierar en uppsättning funktioner för händelseåteranrop som drivrutinen kan tillhandahålla och en uppsättning objektmetoder som drivrutinen kan anropa.
När ramverket tar emot en I/O-begäran som dirigeras till en av drivrutinsenheterna placerar ramverket begäran i lämplig I/O-kö. Om drivrutinen registrerar en eller flera begärandehanterarekan ramverket meddela din drivrutin varje gång en I/O-begäran är tillgänglig. Alternativt kan drivrutinen kontrollera I/O-kön för begäranden.
De flesta drivrutiner skapar I/O-köer i sin EvtDriverDeviceAdd callbackfunktion. För att skapa en I/O-kö för en enhet anropar drivrutinen ramverksköobjektets WdfIoQueueCreate-metod (som skapar ett ramverksköobjekt). Drivrutinen tillhandahåller en WDF_IO_QUEUE_CONFIG struktur till metoden. Den här strukturen innehåller konfigurationsinformation om kön, till exempel köns expedieringsmetod och pekare till begärarhanterare som ramverket anropar när begäran är tillgänglig i kön. Strukturen anger också om kön ska bli energihanterade och om drivrutinen stödjer nolllängdsbuffertar för köns I/O-förfrågningar.
Om drivrutinen anger DefaultQueue som medlem av WDF_IO_QUEUE_CONFIG-strukturen till TRUE, blir kön enhetens standard-I/O-kö. Om drivrutinen skapar en standard-I/O-kö placerar ramverket alla enhetens I/O-begäranden i den här kön, såvida du inte skapar ytterligare köer för att ta emot några av begäranden. En drivrutin kan hämta en referens till en enhets standard-I/O-kö genom att anropa metoden WdfDeviceGetDefaultQueue.
Om du vill använda mer än en I/O-kö för en enhet kan drivrutinen anropa WdfIoQueueSkapa för att skapa så många köobjekt som du behöver. Om en drivrutin skapar flera köer kan den anropa WdfDeviceConfigureRequestDispatching, som instruerar ramverket att dirigera olika typer av begäranden till olika köer. Du kan till exempel ange att alla läsbegäranden ska levereras till en kö och att alla skrivbegäranden levereras till en annan kö.
Om drivrutinen skapar en uppsättning I/O-köer och anropar WdfDeviceConfigureRequestDispatching för att rikta varje typ av begäran som drivrutinen kan ta emot till en specifik kö, behöver drivrutinen ingen standardkö.
Om en drivrutin inte tillhandahåller en I/O-kö för begäranden av en viss typ, och om drivrutinen är en funktionsdrivrutin, slutför ramverket begäranden av den typen med ett slutförandestatusvärde på STATUS_INVALID_DEVICE_REQUEST. Om drivrutinen är en filterdrivrutin och har anropat WdfFdoInitSetFiltervidarebefordrar ramverket automatiskt dessa begäranden till nästa lägre drivrutin i drivrutinsstacken. En filterdrivrutin som inte bearbetar läsbegäranden behöver därför inte ange en I/O-kö som tar emot läsbegäranden.
Exempel på hur drivrutiner kan använda I/O-köer finns i Exempel på användning av I/O-köer.