public static void Seek(this IStream stream, long dlibMove, STREAM_SEEK dwOrigin, out long plibNewPosition)
        {
            var plibNewPositionPtr = Marshal.AllocCoTaskMem(8);

            try
            {
                stream.Seek(dlibMove, dwOrigin, plibNewPositionPtr);
                plibNewPosition = Marshal.ReadInt64(plibNewPositionPtr, 0);
            }
            finally
            {
                Marshal.FreeCoTaskMem(plibNewPositionPtr);
            }
        }