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.
Viktigt!
Från och med WDK för Windows 11, version 22H2, stöds inte längre WDF-omdistribuerbara saminstallationer. Information om hur du kan kringgå den här ändringen finns i artikeln "WDF omdistribuerbara co-installatörer fungerar inte" i artikeln om kända problem med WDK.
Microsoft Windows stöder Terminal Services, en teknik som gör att flera användare kan ansluta till ett enda serversystem. Det här serversystemet kallas för en terminalserver. En detaljerad beskrivning av Terminal Services finns i Windows SDK-dokumentationen.
Om du utvecklar en skrivarminimejsel eller drivrutin för Windows behöver du inte göra något speciellt för att stödja skrivare som är anslutna till terminalservrar. Du måste dock följa alla riktlinjer för design, implementering och installation som anges i Windows Driver Kit (WDK). Mer specifikt måste du använda följande regler:
Om möjligt kan du stödja skrivaren genom att tillhandahålla en minidrivrutin som fungerar med någon av följande drivrutiner från Microsoft:
Microsoft XPS-skrivardrivrutin
Microsoft Universal Printer Driver
Du måste utforma en DLL för skrivargrafik för att köras i användarläge. Se Välja användarläge eller kernelläge.
Om enheten måste stödjas av en anpassad drivrutin måste drivrutinen följa microsofts arkitektur för skrivardrivrutiner. Specifikt:
Du måste skapa en DLL för skrivargränssnittet.
Du måste skapa en DLL för skrivargrafik. Den här DLL-filen kan köras i antingen användarläge eller kernelläge, men användarläget är att föredra.
Om du skapar kernellägeskod måste du testa koden med hjälp av drivrutinsverifieraren.
Du måste ange en installationsprocedur baserat på konfigurationen av INF-filer enligt beskrivningen i Installera och konfigurera skrivardrivrutiner.
Alla anpassade drivrutinskoder måste vara återinträdesbara. Kod i användarläge bör använda kritiska avsnittsobjekt (beskrivs i Windows SDK-dokumentationen). Kernel-lägeskod bör använda semaforer (se EngCreateSemaphore och relaterade funktioner).
Skrivardrivrutiner och anpassade spoolerkomponenter måste endast komma åt registret via gränssnitt som specifikt tillhandahålls för dessa drivrutiner och spoolerkomponenter, enligt beskrivningen i lämpliga avsnitt i WDK.
Installationsöverväganden
Vanligtvis behöver du bara installera en INF-fil som kan läsas av Microsofts installationsprogram för skrivarklass när en användare anropar guiden Lägg till skrivare . Ibland behövs även anpassad installationskod (ett installationsprogram för saminstallation eller klassinstallation). Kom ihåg följande om du måste skapa anpassad konfigurationskod:
Antingen användaren eller installationskoden måste placera terminalservern i installationsläge. (Mer information finns i Microsoft Windows SDK-dokumentationen.)
Försök inte ersätta systemfiler. Windows-filskydd förbjuder ersättning av systemfiler.
Undvik att kräva systemomstarter så mycket som möjligt. Använd följande riktlinjer:
Ersätt inte drivrutinsfiler som inte har ändrats. Filer som delas av flera enheter bör till exempel inte uppdateras om den senaste versionen redan är installerad.
Om en fil måste ersättas bör installationskoden vidta åtgärder för att ta bort den gamla versionen och sedan läsa in den nya versionen (till exempel genom att stoppa drivrutinstjänsten, ersätta filen och sedan starta om tjänsten).
Att kräva att en användare loggar ut och sedan loggar in igen är att föredra framför att kräva en systemomstart.
Mer information om klassinstallatörer och sampaketerare finns i Skriva klassinstallationer och sampaketerare.
Innan du skriver anpassad installationskod är det viktigt att läsa programmeringsriktlinjerna för Terminal Services som finns i Windows SDK-dokumentationen.
Överväganden för användargränssnitt
Anpassad installationskod som körs av en användare kan visa ett användargränssnitt.
Nästan all skrivardrivrutinskod körs i spoolerns körningskontext och kan därför inte visa något användargränssnitt. Användargränssnitt kan endast visas av DLL:er för skrivargränssnitt och endast i följande funktioner:
Funktionerna DrvDevicePropertySheets och DrvDocumentPropertySheets , som skapar egenskapssidor.
Funktionen DrvPrinterEvent , som tar emot händelsekoder som identifierar skrivarhändelser. Funktionen kan endast visa ett användargränssnitt för händelsekoderna PRINTER_EVENT_ADD_CONNECTION och PRINTER_EVENT_DELETE_CONNECTION.
All annan skrivardrivrutinskod körs i spoolerns kontext. Från den här kontexten är det tillåtet att anropa MessageBox eller MessageBoxEx , men du måste ange MB_SERVICE_NOTIFICATION. Dessa funktioner beskrivs i Windows SDK-dokumentationen.