Example #1
0
        public unsafe void Write(int position, void *pBuffer, int length, DSBLOCK flags)
        {
            IntPtr pvAudioPtr1;
            int    dwAudioBytes1;
            IntPtr pvAudioPtr2;
            int    dwAudioBytes2;

            this.Lock(
                position,
                length,
                out pvAudioPtr1,
                out dwAudioBytes1,
                out pvAudioPtr2,
                out dwAudioBytes2,
                flags);
            try
            {
                int count1 = Math.Min(dwAudioBytes1, length);
                int count2 = length - count1;
                NativeHelper.CPBLK((void *)pvAudioPtr1, (void *)pBuffer, count1);
                if (count2 > 0)
                {
                    NativeHelper.CPBLK((void *)(pvAudioPtr1 + count1), (void *)((byte *)pBuffer + count1), count2);
                }
            }
            finally
            {
                this.Unlock(pvAudioPtr1, dwAudioBytes1, pvAudioPtr2, dwAudioBytes2);
            }
        }
Example #2
0
        // <unmanaged>HRESULT IDirectSoundBuffer::Lock([In] unsigned int dwOffset,[In] unsigned int dwBytes,[Out] void** ppvAudioPtr1,[Out] unsigned int* pdwAudioBytes1,[Out] void** ppvAudioPtr2,[Out, Optional] unsigned int* pdwAudioBytes2,[In] DSBLOCK_ENUM dwFlags)</unmanaged>
        internal unsafe void Lock(int offset, int bytes, out IntPtr audioPtr1Out, out int audioBytes1Ref, out IntPtr audioPtr2Out, out int audioBytes2Ref, DSBLOCK flags)
        {
            IntPtr pvAudioPtr1;
            int    dwAudioBytes1;
            IntPtr pvAudioPtr2;
            int    dwAudioBytes2;
            //result = calli(System.Int32(System.Void*,System.Int32,System.Int32,System.Void*,System.Void*,System.Void*,System.Void*,System.Int32), this._nativePointer, offset, bytes, ptr, ptr2, ptr3, ptr4, flags, *(*(IntPtr*)this._nativePointer + (IntPtr)11 * (IntPtr)sizeof(void*)));
            var result = (HRESULT)NativeHelper.CalliInt32(11, _nativePointer, offset, bytes, (void *)&pvAudioPtr1, (void *)&dwAudioBytes1, (void *)&pvAudioPtr2, (void *)&dwAudioBytes2, (int)flags);

            audioPtr1Out   = pvAudioPtr1;
            audioBytes1Ref = dwAudioBytes1;
            audioPtr2Out   = pvAudioPtr2;
            audioBytes2Ref = dwAudioBytes2;
            result.CheckError();
        }