// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. use shared::basetsd::{INT32, UINT32, UINT_PTR}; use shared::minwindef::{BOOL, BYTE, UCHAR, ULONG, USHORT}; use um::winnt::{HRESULT, PCWSTR, VOID, WCHAR}; use winrt::hstring::{HSTRING, HSTRING_BUFFER, HSTRING_HEADER}; extern "system" { pub fn WindowsCreateString( sourceString: PCWSTR, length: UINT32, string: *mut HSTRING, ) -> HRESULT; pub fn WindowsCreateStringReference( sourceString: PCWSTR, length: UINT32, hstringHeader: *mut HSTRING_HEADER, string: *mut HSTRING, ) -> HRESULT; pub fn WindowsDeleteString( string: HSTRING, ) -> HRESULT; pub fn WindowsDuplicateString( string: HSTRING, newString: *mut HSTRING, ) -> HRESULT; pub fn WindowsGetStringLen( string: HSTRING, ) -> UINT32; pub fn WindowsGetStringRawBuffer( string: HSTRING, length: *mut UINT32, ) -> PCWSTR; pub fn WindowsIsStringEmpty( string: HSTRING, ) -> BOOL; pub fn WindowsStringHasEmbeddedNull( string: HSTRING, hasEmbedNull: *mut BOOL, ) -> HRESULT; pub fn WindowsCompareStringOrdinal( string1: HSTRING, string2: HSTRING, result: *mut INT32, ) -> HRESULT; pub fn WindowsSubstring( string: HSTRING, startIndex: UINT32, newString: *mut HSTRING, ) -> HSTRING; pub fn WindowsSubstringWithSpecifiedLength( string: HSTRING, startIndex: UINT32, length: UINT32, newString: *mut HSTRING, ) -> HRESULT; pub fn WindowsConcatString( string1: HSTRING, string2: HSTRING, newString: *mut HSTRING, ) -> HRESULT; pub fn WindowsReplaceString( string: HSTRING, stringReplaced: HSTRING, stringReplaceWith: HSTRING, newString: *mut HSTRING, ) -> HRESULT; pub fn WindowsTrimStringStart( string: HSTRING, trimString: HSTRING, newString: *mut HSTRING, ) -> HRESULT; pub fn WindowsTrimStringEnd( string: HSTRING, trimString: HSTRING, newString: *mut HSTRING, ) -> HRESULT; pub fn WindowsPreallocateStringBuffer( length: UINT32, charBuffer: *mut *mut WCHAR, bufferHandle: *mut HSTRING_BUFFER, ) -> HRESULT; pub fn WindowsPromoteStringBuffer( bufferHandle: HSTRING_BUFFER, string: *mut HSTRING, ) -> HRESULT; pub fn WindowsDeleteStringBuffer( bufferHandle: HSTRING_BUFFER, ) -> HRESULT; } FN!{stdcall PINSPECT_HSTRING_CALLBACK( *const VOID, UINT_PTR, UINT32, *mut BYTE, ) -> HRESULT} extern "system" { pub fn WindowsInspectString( targetHString: UINT_PTR, machine: USHORT, callback: PINSPECT_HSTRING_CALLBACK, context: *const VOID, length: *mut UINT32, targetStringAddress: *mut UINT_PTR, ) -> HRESULT; pub fn HSTRING_UserSize( pFlags: *const ULONG, StartingSize: ULONG, ppidl: *const HSTRING, ) -> ULONG; pub fn HSTRING_UserMarshal( pFlags: *const ULONG, pBuffer: *mut UCHAR, ppidl: *const HSTRING, ) -> *mut UCHAR; pub fn HSTRING_UserUnmarshal( pFlags: *const ULONG, pBuffer: *const UCHAR, ppidl: *mut HSTRING, ) -> *mut UCHAR; pub fn HSTRING_UserFree( pFlags: *const ULONG, ppidl: *const HSTRING, ); #[cfg(target_arch = "x86_64")] pub fn HSTRING_UserSize64( pFlags: *const ULONG, StartingSize: ULONG, ppidl: *const HSTRING, ) -> ULONG; #[cfg(target_arch = "x86_64")] pub fn HSTRING_UserMarshal64( pFlags: *const ULONG, pBuffer: *mut UCHAR, ppidl: *const HSTRING, ) -> *mut UCHAR; #[cfg(target_arch = "x86_64")] pub fn HSTRING_UserUnmarshal64( pFlags: *const ULONG, pBuffer: *const UCHAR, ppidl: *mut HSTRING, ) -> *mut UCHAR; #[cfg(target_arch = "x86_64")] pub fn HSTRING_UserFree64( pFlags: *const ULONG, ppidl: *const HSTRING, ); }