@@ -56,6 +56,7 @@ pub type LPPROCESS_INFORMATION = *mut PROCESS_INFORMATION;
5656pub type LPSECURITY_ATTRIBUTES = * mut SECURITY_ATTRIBUTES ;
5757pub type LPSTARTUPINFO = * mut STARTUPINFO ;
5858pub type LPVOID = * mut c_void ;
59+ pub type LPCVOID = * const c_void ;
5960pub type LPWCH = * mut WCHAR ;
6061pub type LPWIN32_FIND_DATAW = * mut WIN32_FIND_DATAW ;
6162pub type LPWSADATA = * mut WSADATA ;
@@ -773,6 +774,16 @@ pub struct timeval {
773774 pub tv_usec : c_long ,
774775}
775776
777+ #[ repr( C ) ]
778+ #[ derive( Copy , Clone ) ]
779+ pub struct CONSOLE_READCONSOLE_CONTROL {
780+ pub nLength : ULONG ,
781+ pub nInitialChars : ULONG ,
782+ pub dwCtrlWakeupMask : ULONG ,
783+ pub dwControlKeyState : ULONG ,
784+ }
785+ pub type PCONSOLE_READCONSOLE_CONTROL = * mut CONSOLE_READCONSOLE_CONTROL ;
786+
776787// Desktop specific functions & types
777788cfg_if:: cfg_if! {
778789if #[ cfg( not( target_vendor = "uwp" ) ) ] {
@@ -801,17 +812,6 @@ if #[cfg(not(target_vendor = "uwp"))] {
801812 pub type PVECTORED_EXCEPTION_HANDLER =
802813 extern "system" fn ( ExceptionInfo : * mut EXCEPTION_POINTERS ) -> LONG ;
803814
804- #[ repr( C ) ]
805- #[ derive( Copy , Clone ) ]
806- pub struct CONSOLE_READCONSOLE_CONTROL {
807- pub nLength: ULONG ,
808- pub nInitialChars: ULONG ,
809- pub dwCtrlWakeupMask: ULONG ,
810- pub dwControlKeyState: ULONG ,
811- }
812-
813- pub type PCONSOLE_READCONSOLE_CONTROL = * mut CONSOLE_READCONSOLE_CONTROL ;
814-
815815 #[ repr( C ) ]
816816 pub struct BY_HANDLE_FILE_INFORMATION {
817817 pub dwFileAttributes: DWORD ,
@@ -827,7 +827,6 @@ if #[cfg(not(target_vendor = "uwp"))] {
827827 }
828828
829829 pub type LPBY_HANDLE_FILE_INFORMATION = * mut BY_HANDLE_FILE_INFORMATION ;
830- pub type LPCVOID = * const c_void;
831830
832831 pub const HANDLE_FLAG_INHERIT : DWORD = 0x00000001 ;
833832
@@ -855,24 +854,6 @@ if #[cfg(not(target_vendor = "uwp"))] {
855854
856855 #[ link( name = "kernel32" ) ]
857856 extern "system" {
858- // Functions forbidden when targeting UWP
859- pub fn ReadConsoleW (
860- hConsoleInput: HANDLE ,
861- lpBuffer: LPVOID ,
862- nNumberOfCharsToRead: DWORD ,
863- lpNumberOfCharsRead: LPDWORD ,
864- pInputControl: PCONSOLE_READCONSOLE_CONTROL ,
865- ) -> BOOL ;
866-
867- pub fn WriteConsoleW (
868- hConsoleOutput: HANDLE ,
869- lpBuffer: LPCVOID ,
870- nNumberOfCharsToWrite: DWORD ,
871- lpNumberOfCharsWritten: LPDWORD ,
872- lpReserved: LPVOID ,
873- ) -> BOOL ;
874-
875- pub fn GetConsoleMode ( hConsoleHandle: HANDLE , lpMode: LPDWORD ) -> BOOL ;
876857 // Allowed but unused by UWP
877858 pub fn GetFileInformationByHandle (
878859 hFile: HANDLE ,
@@ -914,6 +895,22 @@ if #[cfg(target_vendor = "uwp")] {
914895extern "system" {
915896 pub fn GetCurrentProcessId ( ) -> DWORD ;
916897
898+ pub fn ReadConsoleW (
899+ hConsoleInput : HANDLE ,
900+ lpBuffer : LPVOID ,
901+ nNumberOfCharsToRead : DWORD ,
902+ lpNumberOfCharsRead : LPDWORD ,
903+ pInputControl : PCONSOLE_READCONSOLE_CONTROL ,
904+ ) -> BOOL ;
905+ pub fn WriteConsoleW (
906+ hConsoleOutput : HANDLE ,
907+ lpBuffer : LPCVOID ,
908+ nNumberOfCharsToWrite : DWORD ,
909+ lpNumberOfCharsWritten : LPDWORD ,
910+ lpReserved : LPVOID ,
911+ ) -> BOOL ;
912+ pub fn GetConsoleMode ( hConsoleHandle : HANDLE , lpMode : LPDWORD ) -> BOOL ;
913+
917914 pub fn GetSystemDirectoryW ( lpBuffer : LPWSTR , uSize : UINT ) -> UINT ;
918915 pub fn RemoveDirectoryW ( lpPathName : LPCWSTR ) -> BOOL ;
919916 pub fn SetFileAttributesW ( lpFileName : LPCWSTR , dwFileAttributes : DWORD ) -> BOOL ;
0 commit comments