private static unsafe int DoCreateReference(IntPtr aPtr, uint aVersion, char *aContainerID, char *aObjectID, char **aNewID)
        {
            GCHandle gch = GCHandle.FromIntPtr(aPtr);
            DvServiceUpnpOrgContentDirectory3 self = (DvServiceUpnpOrgContentDirectory3)gch.Target;
            string containerID = Marshal.PtrToStringAnsi((IntPtr)aContainerID);
            string objectID    = Marshal.PtrToStringAnsi((IntPtr)aObjectID);
            string newID;

            self.CreateReference(aVersion, containerID, objectID, out newID);
            *aNewID = (char *)Marshal.StringToHGlobalAnsi(newID).ToPointer();
            return(0);
        }