| // Licensed under the Apache License, Version 2.0 | 
 | // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | 
 | // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. | 
 | // All files in the project carrying such notice may not be copied, modified, or distributed | 
 | // except according to those terms. | 
 | //! ApiSet Contract for api-ms-win-core-console-l1 | 
 | use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, UINT}; | 
 | use um::wincon::{PCONSOLE_READCONSOLE_CONTROL, PHANDLER_ROUTINE}; | 
 | use um::wincontypes::{COORD, HPCON, PINPUT_RECORD}; | 
 | use um::winnt::{HANDLE, HRESULT, VOID}; | 
 | extern "system" { | 
 |     pub fn AllocConsole() -> BOOL; | 
 |     pub fn GetConsoleCP() -> UINT; | 
 |     pub fn GetConsoleMode( | 
 |         hConsoleHandle: HANDLE, | 
 |         lpMode: LPDWORD, | 
 |     ) -> BOOL; | 
 |     pub fn GetConsoleOutputCP() -> UINT; | 
 |     pub fn GetNumberOfConsoleInputEvents( | 
 |         hConsoleInput: HANDLE, | 
 |         lpNumberOfEvents: LPDWORD, | 
 |     ) -> BOOL; | 
 |     pub fn PeekConsoleInputA( | 
 |         hConsoleInput: HANDLE, | 
 |         lpBuffer: PINPUT_RECORD, | 
 |         nLength: DWORD, | 
 |         lpNumberOfEventsRead: LPDWORD, | 
 |     ) -> BOOL; | 
 |     pub fn ReadConsoleA( | 
 |         hConsoleInput: HANDLE, | 
 |         lpBuffer: LPVOID, | 
 |         nNumberOfCharsToRead: DWORD, | 
 |         lpNumberOfCharsRead: LPDWORD, | 
 |         pInputControl: PCONSOLE_READCONSOLE_CONTROL, | 
 |     ) -> BOOL; | 
 |     pub fn ReadConsoleW( | 
 |         hConsoleInput: HANDLE, | 
 |         lpBuffer: LPVOID, | 
 |         nNumberOfCharsToRead: DWORD, | 
 |         lpNumberOfCharsRead: LPDWORD, | 
 |         pInputControl: PCONSOLE_READCONSOLE_CONTROL, | 
 |     ) -> BOOL; | 
 |     pub fn ReadConsoleInputA( | 
 |         hConsoleInput: HANDLE, | 
 |         lpBuffer: PINPUT_RECORD, | 
 |         nLength: DWORD, | 
 |         lpNumberOfEventsRead: LPDWORD, | 
 |     ) -> BOOL; | 
 |     pub fn ReadConsoleInputW( | 
 |         hConsoleInput: HANDLE, | 
 |         lpBuffer: PINPUT_RECORD, | 
 |         nLength: DWORD, | 
 |         lpNumberOfEventsRead: LPDWORD, | 
 |     ) -> BOOL; | 
 |     pub fn SetConsoleCtrlHandler( | 
 |         HandlerRoutine: PHANDLER_ROUTINE, | 
 |         Add: BOOL, | 
 |     ) -> BOOL; | 
 |     pub fn SetConsoleMode( | 
 |         hConsoleHandle: HANDLE, | 
 |         dwMode: DWORD, | 
 |     ) -> BOOL; | 
 |     pub fn WriteConsoleA( | 
 |         hConsoleOutput: HANDLE, | 
 |         lpBuffer: *const VOID, | 
 |         nNumberOfCharsToWrite: DWORD, | 
 |         lpNumberOfCharsWritten: LPDWORD, | 
 |         lpReserved: LPVOID, | 
 |     ) -> BOOL; | 
 |     pub fn WriteConsoleW( | 
 |         hConsoleOutput: HANDLE, | 
 |         lpBuffer: *const VOID, | 
 |         nNumberOfCharsToWrite: DWORD, | 
 |         lpNumberOfCharsWritten: LPDWORD, | 
 |         lpReserved: LPVOID, | 
 |     ) -> BOOL; | 
 |     pub fn CreatePseudoConsole( | 
 |         size: COORD, | 
 |         hInput: HANDLE, | 
 |         hOutput: HANDLE, | 
 |         dwFlags: DWORD, | 
 |         phPC: *mut HPCON, | 
 |     ) -> HRESULT; | 
 |     pub fn ResizePseudoConsole( | 
 |         hPC: HPCON, | 
 |         size: COORD, | 
 |     ) -> HRESULT; | 
 |     pub fn ClosePseudoConsole( | 
 |         hPC: HPCON, | 
 |     ); | 
 | } |