Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Proces konzoly používá popisovače pro přístup ke vstupním vyrovnávacím pamětím a vyrovnávací paměti obrazovky jeho konzoly. Proces může použít funkci GetStdHandle, CreateFile nebo CreateConsoleScreenBuffer k otevření jednoho z těchto popisovačů.
Funkce GetStdHandle poskytuje mechanismus pro načtení standardního vstupu (STDIN), standardního výstupu (STDOUT) a standardních chyb (STDERR) popisovačů přidružených k procesu. Během vytváření konzoly systém vytvoří tyto popisovače. Zpočátku STDIN je popisovač vstupní vyrovnávací paměti konzoly a STDOUTSTDERR je to popisovač aktivní vyrovnávací paměti obrazovky konzoly. Funkce SetStdHandle však může přesměrovat standardní popisovače změnou popisovače přidruženého k STDIN, STDOUTnebo STDERR. Vzhledem k tomu, že standardní popisovače nadřazeného objektu jsou zděděny libovolným podřízeným procesem, následná volání Metody GetStdHandle vrátí přesměrovaný popisovač. Popisovač vrácený rutinou GetStdHandle proto může odkazovat na něco jiného než vstupně-výstupní operace konzoly. Například před vytvořením podřízeného procesu může nadřazený proces použít SetStdHandle k nastavení popisovače kanálu, který je STDIN zděděný podřízeným procesem. Když podřízený proces volá GetStdHandle, získá popisovač kanálu. To znamená, že nadřazený proces může řídit standardní popisovače podřízeného procesu. Popisovače vrácené funkcí GetStdHandle mají GENERIC_READ | GENERIC_WRITE přístup, pokud nebyla použita sadaStdHandle k nastavení standardního popisovače, aby měl menší přístup.
Hodnota popisovačů vrácených funkcí GetStdHandle není 0, 1 a 2, takže standardní předdefinované streamové konstanty v Stdio.h (STDIN, STDOUTa STDERR) nelze použít ve funkcích, které vyžadují popisovač konzoly.
Funkce CreateFile umožňuje procesu získat popisovač vstupní vyrovnávací paměti konzoly a aktivní vyrovnávací paměti obrazovky, i když STDIN a STDOUT byly přesměrovány. Pokud chcete otevřít popisovač vstupní vyrovnávací paměti konzoly, zadejte CONIN$ hodnotu ve volání CreateFile.
CONOUT$ Zadejte hodnotu ve volání CreateFile pro otevření popisovače pro aktivní vyrovnávací paměť obrazovky konzoly.
CreateFile umožňuje zadat přístup pro čtení a zápis popisovače, který vrací.
Funkce CreateConsoleScreenBuffer vytvoří novou vyrovnávací paměť obrazovky a vrátí popisovač. Tento popisovač lze použít v libovolné funkci, která přijímá popisovač do výstupu konzoly. Nová vyrovnávací paměť obrazovky není aktivní (zobrazena), dokud není jeho popisovač zadán ve volání Funkce SetConsoleActiveScreenBuffer . Všimněte si, že změna aktivní vyrovnávací paměti obrazovky nemá vliv na popisovač vrácený getStdHandle. Podobně použití SetStdHandle ke změně STDOUT popisovač nemá vliv na aktivní vyrovnávací paměť obrazovky.
Obslužné rutiny konzoly vrácené funkcí CreateFile a CreateConsoleScreenBuffer lze použít v libovolné z funkcí konzoly, které vyžadují popisovač vstupní vyrovnávací paměti konzoly nebo vyrovnávací paměti obrazovky konzoly. Obslužné rutiny vrácené funkcí GetStdHandle můžou používat funkce konzoly, pokud nebyly přesměrovány tak, aby odkazovaly na něco jiného než vstupně-výstupní operace konzoly. Pokud byl standardní popisovač přesměrován tak, aby odkazoval na soubor nebo kanál, ale popisovač lze použít pouze funkce ReadFile a WriteFile .
GetFileType může pomoct při určování typu zařízení, na který popisovač odkazuje. Úchyt konzoly představuje jako FILE_TYPE_CHAR.
Proces může použít funkci DuplicateHandle k vytvoření duplicitního popisovače konzoly, který má jiný přístup nebo dědičnost z původního popisovače. Všimněte si však, že proces může vytvořit duplicitní popisovač konzoly pouze pro vlastní použití. Liší se od jiných typů popisovačů (například souborů, potrubí nebo objektů mutex), pro které DuplicateHandle může vytvořit duplikát, který je platný pro jiný proces. Přístup ke konzole musí být sdílen během vytváření jiného procesu nebo může být požadován jiným procesem prostřednictvím mechanismu AttachConsole .
K zavření úchytu konzoly může proces použít funkci CloseHandle .