| // 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. |
| 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, |
| ); |
| } |