/// <summary>To be documented.</summary>
        public readonly unsafe int RegisterDestructionCallback(PfnDestructionCallback callbackFn, void *pData, uint *pCallbackID)
        {
            var @this = (ID3DDestructionNotifier *)Unsafe.AsPointer(ref Unsafe.AsRef(in this));
            int ret   = default;

            ret = ((delegate * unmanaged[Cdecl] < ID3DDestructionNotifier *, PfnDestructionCallback, void *, uint *, int >)LpVtbl[3])(@this, callbackFn, pData, pCallbackID);
            return(ret);
        }
        /// <summary>To be documented.</summary>
        public readonly unsafe int RegisterDestructionCallback <T0>(PfnDestructionCallback callbackFn, ref T0 pData, uint *pCallbackID) where T0 : unmanaged
        {
            var @this = (ID3DDestructionNotifier *)Unsafe.AsPointer(ref Unsafe.AsRef(in this));
            int ret   = default;

            fixed(T0 *pDataPtr = &pData)
            {
                ret = ((delegate * unmanaged[Cdecl] < ID3DDestructionNotifier *, PfnDestructionCallback, T0 *, uint *, int >)LpVtbl[3])(@this, callbackFn, pDataPtr, pCallbackID);
            }

            return(ret);
        }