Sometimes it becomes necessary to pass or receive an IntPtr and be able to cast it to an interface to use it. IntPtr, in this case, would be the unmanaged pointer to your object.
INotifyInfo notifyInfo = global.NotifyInfo.Marshal( pointer );
IntPtr pointer = notifyInfo.Handle;