본문 바로가기

Programming/Windows&C#

(64)
[Windows/WinAPI] WindowsAPI / MoveMemory void MoveMemory( _In_ PVOID Destination, -----① _In_ const VOID *Source, -----② _In_ SIZE_T Length -----③ ); 함수 설명 : 정해진 크기의 메모리를 이동할 때 사용한다. CopyMemory와의 차이는 중첩을 할수 있는가 없는가의 차이가 있다. ① Desination : 옮길 메모리 ② Source : 옮겨 넣을 원본 메모리 ③ Length : 옮길 메모리 크기
[Windows/WinAPI] WindowsAPI / CopyMemory void CopyMemory( _In_ PVOID Destination, -----① _In_ const VOID *Source, -----② _In_ SIZE_T Length -----③ ); 함수 설명 : 정해진 크기의 메모리를 복사 ① Destination : 복사를 값을 저장할 메모리 ② Source : 복사할 값을 가진 메모리, 여기서 const 선언이 되어 있는 이유는 복사하다가 값이 변하는것을 막기 위해서 이다. ③ Length : 복사할 크기
[Windows/WinAPI] WindowsAPI / ZeroMemory void ZeroMemory( [in] PVOID Destination, -----① [in] SIZE_T Length -----② ); 함수 설명 : 정해진 크기의 메모리를 0으로 초기화 할때 사용. ① Destination : 초기화할 메모리 포인터 ② Length : 초기화할 크기
[Windows/WinAPI] WindowAPI / FillMemory void FillMemory( [out] PVOID Destination, -----① [in] SIZE_T Length, -----② [in] BYTE Fill -----③ ); 함수 설명 : 정해진 크기의 메모리에 데이터를 채움. ① Destination : 값을 채울 메모리 포인터 ② Length : 값을 채울 크기. ③ Fill : 값을 채울 1바이트 값.
[Windows/WinAPI] WindowsAPI / CreateNamedPipe 보호되어 있는 글입니다.
[Windows/WinAPI] WindowsAPI / DuplicateHandle BOOL WINAPI DuplicateHandle( _In_ HANDLE hSourceProcessHandle, -----① _In_ HANDLE hSourceHandle, -----② _In_ HANDLE hTargetProcessHandle, -----③ _Out_ LPHANDLE lpTargetHandle, -----④ _In_ DWORD dwDesiredAccess, -----⑤ _In_ BOOL bInheritHandle, -----⑥ _In_ DWORD dwOptions -----⑦ ); 함수 설명 :실행중에 있는 프로세스의 핸들을 얻을때 GetCurrentProcess를 사용하여 얻는다. 하지만 이 핸들값음 Pseudo 핸들이라 하여 핸들 테이블에 있는 값이 아니기 때문이다. 따라서 Dupl..
[Windows/WinAPI] 자식 프로세스를 만들고 값을 리턴받음 자식 프로세스로 생성 할 프로세스다. 간단하게 인수를 3개를 받으며 2번째 인수값과 3번째 인수값을 받으면 그 사이 값들의 곱을 리턴해준다. 다음으로 메인 프로세스다. 위에서 중요한것은 WaitForSingleObject를 사용하지 않고 실행하면 에러가 뜬다(주석처리 후 실행하면 값이 다름)이러한 이유는 GetExitCodeProcess의 경우 프로세서가 종료된 후에 값을 보내는데 종료 되지 않은 자식 프로세스가 종료가 되었다는 보장이 없다.그래서 WaitForSingleObject를 이용해서 종료가 될때까지 기다려 준다. (예제 : 뇌를 자극하는 시스템 프로그래밍)
[Windows/WinAPI] _beginthread, _beginthreadex uintptr_t _beginthread( void( *start_address )( void * ), --------① unsigned stack_size, --------② void *arglist --------③); uintptr_t _beginthreadex( void *security, --------① unsigned stack_size, --------② unsigned ( *start_address )( void * ), --------③ void *arglist, --------④ unsigned initflag, --------⑤ unsigned *thrdaddr --------⑥ ); 함수설명 :쓰래드 생성 함수. ① security : 새 쓰래드의 실행을 시작하는 루틴의 시작 주소..