Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than msvcrt, prefix the name with the module name and a period.
<DllImport("msvcrt.dll", EntryPoint:="memcpy", CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Sub CopyMemory(ByVal dest As IntPtr, ByVal src As IntPtr, ByVal count As Integer)
End Sub
VB Signature:
Declare Function memcpy Lib "msvcrt.dll" ( _
ByVal dest As Any, _
ByVal src As Any, _
ByVal count As Long) _
as Long
Declare Function memcpy Lib "msvcrt.dll" (TODO) As TODO
Return Value:
The value of dest.
User-Defined Types:
None.
Alternative Managed API:
System.Buffer.BlockCopy, Marshal.Copy and Array.Copy provide similar services, but require one or two managed arrays instead of pointers.
Notes:
None.
Tips & Tricks:
Please add some!
Sample Code VB.Net:
Imports System.Runtime.InteropServices
Sub Main()
Dim managedArray1 As Char() = ("Ciao").ToCharArray
Dim size As Integer = Marshal.SizeOf(managedArray1(0)) * managedArray1.Length
Dim pnt1 As IntPtr = Marshal.AllocHGlobal(size)
Dim pnt2 As IntPtr = Marshal.AllocHGlobal(size)
Dim managedArray2(managedArray1.Length - 1) As Char
Try
Marshal.Copy(managedArray1, 0, pnt1, managedArray1.Length)
'----MemCpy
CopyMemory(pnt2, pnt1, size * 2)
'----
Marshal.Copy(pnt2, managedArray2, 0, managedArray2.Length)
Finally
Marshal.FreeHGlobal(pnt1)
Marshal.FreeHGlobal(pnt2)
End Try
Dim value As String = New String(managedArray2)
Console.WriteLine(">>" + value + "<<")
End Sub
Sample Code C#:
public static Bitmap Clone(Bitmap src)
{
// get source image size
int width = src.Width;
int height = src.Height;
// lock source bitmap data
BitmapData srcData = src.LockBits(
new Rectangle(0, 0, width, height),
ImageLockMode.ReadWrite, src.PixelFormat);
// create new image
Bitmap dst = new Bitmap(width, height, src.PixelFormat);
// lock destination bitmap data
BitmapData dstData = dst.LockBits(
new Rectangle(0, 0, width, height),
ImageLockMode.ReadWrite, dst.PixelFormat);
memcpy(dstData.Scan0, srcData.Scan0, new UIntPtr((uint)height * (uint)srcData.Stride));
// unlock both images
dst.UnlockBits(dstData);
src.UnlockBits(srcData);
return dst;
}
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).