Skip to content

Instantly share code, notes, and snippets.

@devhawk
Created June 12, 2012 23:12
Show Gist options
  • Save devhawk/2920749 to your computer and use it in GitHub Desktop.
Save devhawk/2920749 to your computer and use it in GitHub Desktop.
P/Invoke and wrapper method for RoParseTypeName
static string[] ParseTypeName(string typename)
{
UInt32 partsCount;
IntPtr[] typeNameParts = null;
try
{
var hr = RoParseTypeName(typename, out partsCount, out typeNameParts);
var parts = partsCount == 0 ? new string[0] : typeNameParts.Select(p => WindowsRuntimeMarshal.PtrToStringHString(p)).ToArray();
return parts;
}
finally
{
if (typeNameParts != null)
{
foreach (var part in typeNameParts) { WindowsRuntimeMarshal.FreeHString(part); }
}
}
}
[DllImport("WinTypes.dll")]
static extern UInt32 RoParseTypeName(
[MarshalAs(UnmanagedType.HString)] string typename,
out UInt32 partsCount,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] out IntPtr[] typeNameParts);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment