Dela via


Använda Allmänna ramverksobjekt

Det allmänna ramverksobjektet är det ramverksobjekt som alla andra typer av ramverksobjekt härleds från.

Precis som andra ramverksobjekt stöder allmänna objekt ett referensantal, kontextutrymme, återanropsfunktioner för borttagning och ett överordnat objekt enligt beskrivningen i Introduktion till ramverksobjekt.

Drivrutiner kan skapa och använda allmänna ramverksobjekt. Om drivrutinen anropar WdfObjectSkapa för att skapa generella objekt, kan den:

  • Skapa ett eller flera kontextutrymmen för varje allmänt objekt.

    Du kan använda objektkontextutrymme för att lagra information om systemresurser som du vill associera med det allmänna objektet.

    Mer information om kontextutrymme finns i Framework Object Context Space.

  • Tilldela ett överordnat objekt till det allmänna objektet.

    Det allmänna objektet tas bort när det överordnade objektet tas bort. Om drivrutinen till exempel anger ett ramverksenhetsobjekt som överordnat objekt för ett av dess allmänna objekt, tar ramverket bort det allmänna objektet när det tar bort enhetsobjektet.

    Drivrutiner anger ett objekts överordnade objekt genom att ange ParentObject member i objektets WDF_OBJECT_ATTRIBUTES struktur.

  • Tillhandahåll återanropsfunktioner för borttagning.

    Drivrutinen kan tillhandahålla -funktionerna EvtCleanupCallback och EvtDestroyCallback, som kan frigöra systemresurser som drivrutinen allokerade när den skapade det allmänna objektet. Om drivrutinen till exempel anropar ExAllocatePool när den skapade ett allmänt objekt, kan återanropsfunktionen för rensning eller förstöring anropa ExFreePool.

Att använda allmänna objekt kan vara ett bekvämt sätt att hantera drivrutinsallokerade resurser. En drivrutin på högre nivå kan till exempel kräva flera minnesallokeringar för att bearbeta en mottagen I/O-begäran, om drivrutinen skickar begäran till flera enheter eller delar upp begäran i flera mindre. Drivrutinen kan skapa ett eller flera allmänna objekt som är underordnade den mottagna I/O-begäran och den kan lagra information om minnesallokeringarna i de allmänna objektens kontextutrymme.