Exemplo n.º 1
0
        private static void FreeChapter(IntPtr buffer, int valueOffset, object iaccessor)
        {
            Debug.Assert(0 == valueOffset % 8, "unexpected unaligned ptr offset");

            UnsafeNativeMethods.IChapteredRowset chapteredRowset = (iaccessor as UnsafeNativeMethods.IChapteredRowset) !;
            IntPtr chapter = SafeNativeMethods.InterlockedExchangePointer(ADP.IntPtrOffset(buffer, valueOffset), ADP.PtrZero);

            if (ODB.DB_NULL_HCHAPTER != chapter)
            {
                chapteredRowset.ReleaseChapter(chapter, out _);
            }
        }
        private static void FreeChapter(IntPtr buffer, int valueOffset, object iaccessor)
        {
            UnsafeNativeMethods.IChapteredRowset rowset = iaccessor as UnsafeNativeMethods.IChapteredRowset;
            IntPtr ptr = SafeNativeMethods.InterlockedExchangePointer(ADP.IntPtrOffset(buffer, valueOffset), ADP.PtrZero);

            if (ODB.DB_NULL_HCHAPTER != ptr)
            {
                int num;
                Bid.Trace("<oledb.IChapteredRowset.ReleaseChapter|API|OLEDB> Chapter=%Id\n", ptr);
                OleDbHResult result = rowset.ReleaseChapter(ptr, out num);
                Bid.Trace("<oledb.IChapteredRowset.ReleaseChapter|API|OLEDB|RET> %08X{HRESULT}, RefCount=%d\n", result, num);
            }
        }
Exemplo n.º 3
0
        // this correctly does not have a ReliabilityContract, will not be called via ReleaseHandle
        static private void FreeChapter(IntPtr buffer, int valueOffset, object iaccessor)
        {
            Debug.Assert(0 == valueOffset % 8, "unexpected unaligned ptr offset");

            UnsafeNativeMethods.IChapteredRowset chapteredRowset = (iaccessor as UnsafeNativeMethods.IChapteredRowset);
            IntPtr chapter = SafeNativeMethods.InterlockedExchangePointer(ADP.IntPtrOffset(buffer, valueOffset), ADP.PtrZero);

            if (ODB.DB_NULL_HCHAPTER != chapter)
            {
                int refCount;
                Bid.Trace("<oledb.IChapteredRowset.ReleaseChapter|API|OLEDB> Chapter=%Id\n", chapter);
                OleDbHResult hr = chapteredRowset.ReleaseChapter(chapter, out refCount);
                Bid.Trace("<oledb.IChapteredRowset.ReleaseChapter|API|OLEDB|RET> %08X{HRESULT}, RefCount=%d\n", hr, refCount);
            }
        }