На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Console Handles



A console process uses handles to access the input and screen buffers of its console. A process can use the GetStdHandle, CreateFile, or CreateConsoleScreenBuffer function to open one of these handles.

The GetStdHandle function provides a mechanism for retrieving the standard input (STDIN), standard output (STDOUT), and standard error (STDERR) handles associated with a process. During console creation, the system creates these handles. Initially, STDIN is a handle of the console's input buffer, and STDOUT and STDERR are handles of the console's active screen buffer. However, the SetStdHandle function can redirect the standard handles by changing the handle associated with STDIN, STDOUT, or STDERR. Because the parent's standard handles are inherited by any child process, subsequent calls to GetStdHandle return the redirected handle. A handle returned by GetStdHandle may, therefore, refer to something other than console I/O. For example, before creating a child process, a parent process can use SetStdHandle to set a pipe handle to be the STDIN handle that is inherited by the child process. When the child process calls GetStdHandle, it gets the pipe handle. This means that the parent process can control the standard handles of the child process. The handles returned by GetStdHandle have GENERIC_READ | GENERIC_WRITE access unless SetStdHandle has been used to set the standard handle to have lesser access.

The value of the handles returned by GetStdHandle will not be 0, 1, and 2, so the standard predefined stream constants in the STDIO.H header file (STDIN, STDOUT, and STDERR) cannot be used in functions that require a console handle.
The CreateFile function enables a process to get a handle of its console's input buffer and active screen buffer, even if STDIN and STDOUT have been redirected. To open a handle of a console's input buffer, specify the CONIN$ value in a call to CreateFile. Specify the CONOUT$ value in a call to CreateFile to open a handle of a console's active screen buffer. CreateFile enables you to specify the read-write access of the handle that it returns.

The CreateConsoleScreenBuffer function creates a new screen buffer and returns a handle, which can be used in any function that accepts a handle of console output. The new screen buffer is not active until its handle is specified in a call to the SetConsoleActiveScreenBuffer function. Note that changing the active screen buffer does not affect the handle returned by GetStdHandle. Similarly, using SetStdHandle to change the STDOUT handle does not affect the active screen buffer.

Console handles returned by CreateFile and CreateConsoleScreenBuffer can be used in any of the console functions that require a handle of a console's input buffer or of a console screen buffer. Handles returned by GetStdHandle can be used by the console functions if they have not been redirected to refer to something other than console I/O. If a standard handle has been redirected to refer to a file or a pipe, however, the handle can only be used by the ReadFile and WriteFile functions.

A process can use the DuplicateHandle function to create a duplicate console handle that has different access or inheritability from the original handle. Note, however, that a process can create a duplicate console handle only for its own use. This differs from other handle types (such as file, pipe, or mutex objects), for which DuplicateHandle can create a duplicate that is valid for a different process.
To close a console handle, a process can use the CloseHandle function.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Консольные Ручки



Консольный процесс использует ручки, чтобы иметь доступ ко вкладу и отгораживать буферы своей консоли. Процесс может использовать GetStdHandle, CreateFile, или функцию CreateConsoleScreenBuffer, чтобы открывать одну из этих ручек.

Функция GetStdHandle обеспечивает механизм для поиска стандартного вклада (STDIN), стандартный выход (STDOUT), и стандартная ошибка (STDERR) ручки связывалась процессом. В течение консольного создания, система создает эти ручки. Первоначально, STDIN - ручка консольного входного буфера, и STDOUT и STDERR - ручки консольного активного экранного буфера. Тем не менее, функция SetStdHandle может переназначить стандартные ручки изменяя ручку связывался STDIN, STDOUT, или STDERR. Поскольку родительские стандартные ручки унаследованы любым процессом ребенка, последующих вызовов на GetStdHandle возвращать переназначенную ручку. Ручка возвращанная GetStdHandle может, следовательно, ссылаться на что-то кроме консоли В/В. Например, перед созданием процесса ребенка, родительский процесс может использовать SetStdHandle, чтобы устанавливать ручку трубы, чтобы быть ручкой STDIN, что унаследован процессом ребенка. Когда процесс ребенка называет GetStdHandle, он получает ручку трубы. Это означает, что родительский процесс может управлять стандартными ручками процесса ребенка. Ручки возвращанные GetStdHandle имеют GENERIC_READ | доступ GENERIC_WRITE если SetStdHandle не использован, чтобы устанавливать стандартную ручку, чтобы иметь меньший доступ.

Величина ручек возвращанных GetStdHandle не будет 0, 1, и 2, так что стандартные встроенные константы потока в файле заголовка STDIO.H (STDIN, STDOUT, и STDERR), не могут быть использованы в функциях, которые требуют консольную ручку.
Функция CreateFile позволяет процесс, чтобы получать ручку своего консольного входного буферного и активного экранного буфера, даже если бы STDIN и STDOUT переназначен. Для того, чтобы открывать ручку консольного входного буфера, определите CONIN$ величину на вызове на CreateFile. Определите CONOUT$ величину на вызове на CreateFile, чтобы открывать ручку консольного активного экранного буфера. CreateFile ПОЗВОЛЯЕТ Вам, чтобы определять читать-писать доступ ручки, что это возвращает.

Функция CreateConsoleScreenBuffer создает новый экранный буфер и возвращает ручку, которая может быть использована в любой функции, которая принимает ручку консольного выхода. Новый экранный буфер не активен пока ручка не будет определена на вызове в функцию SetConsoleActiveScreenBuffer. Отметьте, что изменяя активный экранный буфер не влияет на ручку возвращанную GetStdHandle. Аналогично, используя SetStdHandle, чтобы изменять ручку STDOUT не влияет на активный экранный буфер.

Консольные ручки возвращались CreateFile и CreateConsoleScreenBuffer может быть использован в любой из консольных функций, что требовать ручку консольного входного буфера или консольного экранного буфера. Ручки возвращанные GetStdHandle могут быть использованы консольными функциями если они не переназначены, чтобы ссылаться на что-то кроме консоли В/В. Если стандартная ручка переназначена, чтобы ссылаться на файл или труба, тем не менее, ручка может только использована ReadFile и функциями WriteFile.

Процесс может использовать функцию DuplicateHandle, чтобы создавать двойную консольную ручку, что имеет другой доступ или inheritability из оригинальной ручки. Примечание, тем не менее, что процесс может создать двойную консольную ручку только для своего собственного использования. Это отличается от других типов ручки (как например, файл, труба, или mutex объекты), для которого DuplicateHandle могут создать дубликат, который - в силе для другого процесса.
Чтобы закрывать консольную ручку, процесс может использовать функцию CloseHandle.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz