Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een consoleproces gebruikt ingangen voor toegang tot de invoer- en schermbuffers van de console. Een proces kan de functie GetStdHandle, CreateFile of CreateConsoleScreenBuffer gebruiken om een van deze ingangen te openen.
De functie GetStdHandle biedt een mechanisme voor het ophalen van de standaardinvoer (STDIN), standaarduitvoer (STDOUT) en standaardfoutgrepen dieSTDERR zijn gekoppeld aan een proces. Tijdens het maken van de console maakt het systeem deze ingangen. In eerste instantie STDIN is dit een ingang voor de invoerbuffer van de console en STDERRSTDOUT zijn ingangen van de actieve schermbuffer van de console. De functie SetStdHandle kan de standaardgrepen echter omleiden door de greep te wijzigen die is gekoppeld aan STDIN, STDOUTof STDERR. Omdat de standaardgrepen van het bovenliggende item worden overgenomen door een onderliggend proces, retourneren volgende aanroepen naar GetStdHandle de omgeleide ingang. Een ingang die door GetStdHandle wordt geretourneerd, kan daarom verwijzen naar iets anders dan console-I/O. Voordat u bijvoorbeeld een onderliggend proces maakt, kan een bovenliggend proces SetStdHandle gebruiken om een pijpgreep in te stellen als de STDIN greep die wordt overgenomen door het onderliggende proces. Wanneer het onderliggende proces GetStdHandle aanroept, krijgt het de pijpgreep. Dit betekent dat het bovenliggende proces de standaardgrepen van het onderliggende proces kan beheren. De ingangen die door GetStdHandle worden geretourneerd, hebben GENERIC_READ | GENERIC_WRITE toegang, tenzij SetStdHandle is gebruikt om de standaardgreep zo in te stellen dat deze minder toegang heeft.
De waarde van de ingangen die worden geretourneerd door GetStdHandle zijn niet 0, 1 en 2, dus de standaard vooraf gedefinieerde stroomconstanten in Stdio.h (STDIN, STDOUTen STDERR) kunnen niet worden gebruikt in functies waarvoor een consolegreep is vereist.
Met de functie CreateFile kan een proces een ingang ophalen naar de invoerbuffer van de console en de actieve schermbuffer, zelfs als STDIN en STDOUT zijn omgeleid. Als u een ingang wilt openen naar de invoerbuffer van een console, geeft u de CONIN$ waarde op in een aanroep naar CreateFile. Geef de CONOUT$ waarde op in een aanroep van CreateFile om een ingang te openen voor de actieve schermbuffer van een console.
Met CreateFile kunt u de lees-/schrijftoegang opgeven van de ingang die wordt geretourneerd.
De functie CreateConsoleScreenBuffer maakt een nieuwe schermbuffer en retourneert een ingang. Deze ingang kan worden gebruikt in elke functie die een ingang accepteert voor console-uitvoer. De nieuwe schermbuffer is pas actief (weergegeven) als de ingang is opgegeven in een aanroep naar de functie SetConsoleActiveScreenBuffer . Houd er rekening mee dat het wijzigen van de actieve schermbuffer geen invloed heeft op de ingang die wordt geretourneerd door GetStdHandle. Op dezelfde manier heeft het gebruik van SetStdHandle om de STDOUT ingang te wijzigen geen invloed op de actieve schermbuffer.
Console-ingangen die worden geretourneerd door CreateFile en CreateConsoleScreenBuffer kunnen worden gebruikt in een van de consolefuncties waarvoor een ingang is vereist voor de invoerbuffer van een console of van een consoleschermbuffer. Ingangen die door GetStdHandle worden geretourneerd, kunnen worden gebruikt door de consolefuncties als ze niet zijn omgeleid om te verwijzen naar iets anders dan console-I/O. Als een standaardgreep is omgeleid om te verwijzen naar een bestand of een pijp, kan de ingang echter alleen worden gebruikt door de functies ReadFile en WriteFile .
GetFileType kan helpen bij het bepalen naar welk apparaattype de ingang verwijst. Een consolegreep wordt weergegeven als FILE_TYPE_CHAR.
Een proces kan de functie DuplicateHandle gebruiken om een dubbele consolegreep te maken die verschillende toegang of overnamemogelijkheden heeft van de oorspronkelijke ingang. Houd er echter rekening mee dat een proces alleen voor eigen gebruik een dubbele consolehandgreep kan maken. Dit verschilt van andere handletypen (zoals bestands-, pijp- of mutex-objecten), waarvoor DuplicateHandle een duplicaat kan maken dat geldig is voor een ander proces. Toegang tot een console moet worden gedeeld tijdens het maken van het andere proces of kan worden aangevraagd door het andere proces via het AttachConsole-mechanisme .
Als u een consolegreep wilt sluiten, kan een proces de functie CloseHandle gebruiken.