public static uint ReserveAndAppendLog(
            SafeMarshalContext pvMarshal,
            CLFS_WRITE_ENTRY[] rgWriteEntries,
            int cWriteEntries,
            [In] ref ulong plsnUndoNext,
            [In] ref ulong plsnPrevious,
            int cReserveRecords,
            long[] rgcbReservation,
            int fFlags,
            IntPtr plsn,
            NativeOverlapped* pOverlapped)
        {
            uint errorCode = Error.ERROR_SUCCESS;
            if (!_ReserveAndAppendLog(pvMarshal,
                                      rgWriteEntries,
                                      cWriteEntries,
                                      ref plsnUndoNext,
                                      ref plsnPrevious,
                                      cReserveRecords,
                                      rgcbReservation,
                                      fFlags,
                                      plsn,
                                      pOverlapped))
            {
                errorCode = (uint)Marshal.GetLastWin32Error();
            }

            return errorCode;
        }
 extern static bool _ReserveAndAppendLog(
     SafeMarshalContext pvMarshal,
     CLFS_WRITE_ENTRY[] rgWriteEntries,
     int cWriteEntries,
     [In] ref ulong plsnUndoNext,
     [In] ref ulong plsnPrevious,
     int cReserveRecords,
     long[] rgcbReservation,
     int fFlags,
     IntPtr plsn,
     NativeOverlapped* pOverlapped);