private static unsafe int DoGetSortCapabilities(IntPtr aPtr, uint aVersion, char **aSortCaps, uint *aSortLevelCap) { GCHandle gch = GCHandle.FromIntPtr(aPtr); DvServiceUpnpOrgScheduledRecording1 self = (DvServiceUpnpOrgScheduledRecording1)gch.Target; string sortCaps; uint sortLevelCap; self.GetSortCapabilities(aVersion, out sortCaps, out sortLevelCap); *aSortCaps = (char *)Marshal.StringToHGlobalAnsi(sortCaps).ToPointer(); *aSortLevelCap = sortLevelCap; return(0); }