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.
Stilleståndsgränssnitten definierar två överföringslägen – statusläge och dataläge. När en klient i IStillImage COM-gränssnittet anropar IStillImage::CreateDevice för att få åtkomst till en stillebensenhet anger den en (eller båda) överföringslägen. Flera klienter kan öppna en enhet i statusläge, men endast en klient i taget kan öppna en enhet i dataläge.
Stillbildshändelseövervakaren aktiverar enheter i statusläge. Normalt, men inte alltid, öppnar API:er för bildförvärv enheter i dataläge.
När en klient har öppnat en enhet i dataläge lagrar händelseövervakaren efterföljande stillbildsenhetshändelser i en intern kö. Om klienten anropar IStiDevice::Subscribe kan den läsa händelser från kön genom att anropa IStiDevice::GetLastNotificationData. När klienten har stängt enheten kan händelser som senare tas emot göra att händelseövervakaren försöker starta ett registrerat program igen.
Innebörden av de två överföringslägena är helt beroende av enhetens minidriver i användarläge. Gränssnitten IStillImage och IStiDevice tillåter att alla metoder anropas i båda lägena.
En minidrivrutin kan avgöra vilket läge den öppnades i genom att anropa IStiDevice::GetLastNotificationData. Minidrivrutiner borde förbjuda en klient från att utföra dataöverföringar om klienten har begärt endast statusläge vid åtkomsttilldelning av enheten.
Det är viktigt att observera att enheter vanligtvis öppnas i statusläge under relativt lång tid (till exempel att händelseövervakaren bevakar enhetshändelser), medan de öppnas i dataläge under en relativt kort tid (till exempel för att läsa i en bild). Även om arkitekturen för stillbilder endast tillåter att en klient i taget öppnar en enhet i dataläge, kan det vara nödvändigt för en drivrutin att införa ytterligare begränsningar för enhetsåtkomst.
Om du till exempel skriver en drivrutin för en enhet som är ansluten till en serieport kanske du vill anropa CreateFile från drivrutinens IStiUSD::LockDevice-metod om enheten öppnades i statusläge. Detta förhindrar att andra program använder porten (som kanske stöder andra enheter) medan statusinformation hämtas från enheten.
För enheter som är anslutna till dedikerade portar, till exempel SCSI- eller USB-bussenheter, är det vanligtvis tillåtet att anropa CreateFile inifrån IStiUSD::Initiera om statusläget anges, eftersom enheten och porten alltid är dedikerade till en klient.
När en enhet öppnas i dataläge anropas CreateFile vanligtvis inifrån IStiUSD:Initialize, oberoende av busstyp.