Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Det Microsoft Windows NT-baserade operativsystemet är objektbaserat. Olika komponenter i ledningen definierar en eller flera objekttyper. Varje komponent exporterar kernellägesstödsrutiner som manipulerar instanser av komponentens objekttyper. Ingen komponent kan komma åt en annan komponents objekt direkt. Om du vill använda en annan komponents objekt måste en komponent anropa de exporterade supportrutinerna.
Den här designen gör att operativsystemet kan vara både portabelt och flexibelt. Det är till exempel möjligt för en framtida version av operativsystemet att innehålla en omkodad kernelkomponent som definierar samma objekttyper, men med helt olika interna strukturer. Om den här hypotetiska omkodade versionen av kerneln exporterar en uppsättning supportrutiner som har samma namn och parametrar som den befintliga uppsättningen, skulle de interna ändringarna inte påverka portabiliteten för någon annan verkställande komponent i det befintliga systemet.
För att förbli bärbara och konfigurerbara måste drivrutinerna kommunicera med operativsystemet och med varandra genom att endast använda de supportrutiner och andra gränssnitt som beskrivs i WDK.
Precis som operativsystemet är drivrutinerna också objektbaserade. Till exempel:
Filobjekt representerar ett användarlägesprograms anslutning till en enhet.
Enhetsobjekt representerar varje drivrutins logiska, virtuella eller fysiska enheter.
Drivrutinsobjekt representerar varje drivrutins laddningsbild.
I/O-hanteraren definierar strukturen och gränssnitten för filobjekt, enhetsobjekt och drivrutinsobjekt.
Precis som andra exekutiva komponenter använder drivrutiner objekt genom att anropa kernellägesstödrutiner som I/O-chefen och andra systemkomponenter exporterar. Stödrutiner för kernelläge har vanligtvis namn som identifierar det specifika objekt som varje rutin manipulerar och den åtgärd som varje rutin utför på objektet. Dessa supportrutinnamn har följande form:
PrefixOperationObject
där
Prefix Identifierar komponenten i kernelläge som exporterar supportrutinen och vanligtvis komponenten som definierade objekttypen. De flesta prefix har två bokstäver.
Operation Beskriver vad som görs med objektet.
Objekt Identifierar typen av objekt.
Till exempel skapar I/O-chefens IoCreateDevice-rutin ett enhetsobjekt som representerar en fysisk, logisk eller virtuell enhet som mål för I/O-begäranden.
En systemkomponent kan exportera rutiner som anropar en annan komponents supportrutiner. Detta kan minska antalet samtal som en förare måste göra. I/O-chefen exporterar särskilt vissa rutiner som gör det lättare att utveckla drivrutiner. Till exempel anropar IoConnectInterruptEx, som används av lågnivådrivrutiner för att registrera sina ISR:er, kernelsupportrutinerna för avbrottsobjekt.
Objektopacitet
Vissa systemdefinierade objekt är ogenomskinliga: endast den definierande systemkomponenten är medveten om ett sådant objekts interna struktur och kan direkt komma åt alla data som ett objekt innehåller. Systemkomponenten som definierar en ogenomskinlig objektexport stöder rutiner som drivrutiner och andra komponenter i kernelläge kan anropa för att manipulera objektet. Drivrutiner har aldrig direkt åtkomst till ogenomskinliga objektstrukturer.
Observera För att upprätthålla drivrutinsportabiliteten måste drivrutinerna använda de systemspecifika supportrutinerna för att manipulera systemdefinierade objekt. Den definierande systemkomponenten kan när som helst ändra den interna strukturen för dess objekttyper.