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
'.NET > Windows API for .NET' 카테고리의 다른 글
GetActiveWindow - 현재 프로그램의 윈도우 핸들값 (0) | 2019.08.12 |
---|---|
ActivateKeyboardLayout - Keyboard 언어별 선택함수 (0) | 2019.08.12 |
SystemParameterInfo - Windows System 환경설정 (0) | 2019.08.12 |
SetComputerName - Computer Network 이름 바꾸기 (0) | 2019.08.09 |
GetWindowsDirectory - 운영체제 설치경로 (0) | 2019.08.09 |