private static unsafe int DoCreateObject(IntPtr aPtr, uint aVersion, char *aContainerID, char *aElements, char **aObjectID, char **aResult)
        {
            GCHandle gch = GCHandle.FromIntPtr(aPtr);
            DvServiceUpnpOrgContentDirectory1 self = (DvServiceUpnpOrgContentDirectory1)gch.Target;
            string containerID = Marshal.PtrToStringAnsi((IntPtr)aContainerID);
            string elements    = Marshal.PtrToStringAnsi((IntPtr)aElements);
            string objectID;
            string result;

            self.CreateObject(aVersion, containerID, elements, out objectID, out result);
            *aObjectID = (char *)Marshal.StringToHGlobalAnsi(objectID).ToPointer();
            *aResult   = (char *)Marshal.StringToHGlobalAnsi(result).ToPointer();
            return(0);
        }