.NET/Windows API for .NET

CopyMemory - Memory 복사

클리엘 2019. 8. 12. 11:24
728x90
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As Char, ByRef Source As Char, ByVal Length As Integer)

▶VB.NET 선언

Dim a As Char = "X"
Dim B As Char

CopyMemory(B, a, 1)
B

▶VB.NET 호출

[System.Runtime.InteropServices.DllImport("kernel32.dll")]
public static extern void CopyMemory(ref char Destination, ref char Source, int Length);

▶C# 선언

char a = 'X';
char B = ' ';

CopyMemory(ref B, ref a, 1);
B

▶C# 호출


CopyMemory는 특정한 Memory영역을 복사하는 함수입니다.

CopyMemory에서 첫번째 인수는 복사할 메모리영역의 첫주소값을 전달하고 두번째 인수는 복사될 Memory Block의 첫주소값을 전달합니다. 마지막으로 세번째 인수는 복사될 Memory Block에서 얼마만큼(Byte단위)을 복사할지 지정하면 됩니다.

위 예제는 단순한 CHAR형으로 1Byte의 메모리영역을 복사하는 경우를 보여주고 있습니다. 즉 a변수에 해당하는 Memory Block에서 1Byte만큼을 B영역의 메모리 주소에 복사하는 것입니다.

CopyMemory의 첫번째와 두번째 인수의 Data형식은 복사하고자 하는 Memory Block의 Data형식에 따라 다양하게 변할 수 있으며 또한 주소값을 전달받아야 하므로 인자는 ref형식(주소값 전달형식)이 되어야 합니다.

728x90