DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); WaitForSingleObject 함수는 지정된 개체가 신호 상태가 되거나 시간 제한 간격이 경과할때 까지 기다린다. hHandle 개체의 핸들이며 대기가 아직 보류중인 동안 이 핸들이 닫히면 함수는 동작하지않는다. 핸들은 SYNCHRONIZE 엑세스 권한이 있어야한다. dwMilliseconds 지정된 값만큼 시간을 기다린다. 이 값이 0인 경우 객체가 신호받지않으면 대기상태로 들어가지않으며 항상 즉시 반환된다. 이 값이 INFINITE 인 경우 객체가 신호를 받을 떄만 함수가 반환된다. 이 함수가 성공적으로 실행을 완료하면 WAIT_ABANDONED, WAIT_OBJECT_0, W..
FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName ); GetProcAddress 함수는 특정 DLL에서 내보내기된 함수 또는 변수의 주소를 가져온다. hModule 함수 또는 변수를 포함하고있는 DLL 모듈에 대한 핸들을 나타낸다. LoadLibrary, LoadLibraryEx, LoadPackageLibrary, GetModuleHandle 함수를 통해 인자값을 채울 수 있다. lpProcName 함수 또는 변수의 이름이나 함수의 서수값을 의미한다. 이 함수가 성공적으로 실행을 완료하면 내보내기된 함수 또는 변수의 주소값이 반환된다. 함수의 실행이 실패하면 NULL 이 반환되며 실패에 대한 자세한 정보는 GetLastError 함수를 통해 알 ..
HMODULE GetModuleHandleW(LPCWSTR lpModuleName); GetModuleHandleW 함수는 특정 모듈에 대한 모듈 핸들을 검색한다. 모듈은 호출프로세스에 의해 로드되어 있어야한다. lpModuleName 로드된 모듈의 이름으로 확장자는 *.dll 또는 *.exe 이다. 이 매개변수가 NULL 일 경우, 호출 프로세스 ( *.exe )를 생성하는데 사용된 파일의 핸들을 반환한다. GetModuleHandleW 함수가 성공적으로 실행을 완료하면 특정 모듈의 핸들을 반환한다. 함수의 실행이 실패할 경우 NULL 을 반환하며 실패에대한 자세한 정보는 GetLastError 함수를 통해 알 수 있다. Example HMODULE hMod = GetModuleHandle(L"kern..
BOOL WriteProcessMemory(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten ); WriteProcessMemory 함수는 특정 프로세스의 메모리영역에 데이터를 쓰기한다. hProcess 메모리를 수정할 프로세스의 핸들이다. 이 핸들은 반드시 PROCESS_VM_WRITE 와 PROCESS_VM_OPERATION 권한을 가져야한다. lpBaseAddress 데이터 쓰기를 시작할 프로세스의 메모리주소이다. 데이터 쓰기를 시작하기전 시스템은 지정된 크기의 주소와 메모리의 모든 쓰기 접근이 가능한지 확인하고, 접근할 수 없는경우 함수는 실패한다. lpBuffer ..
LPVOID VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); VirtualAllocEx 함수는 특정 프로세스의 가상 주소 공간 내에서 메모리 영역의 상태를 변경, 할당, 해제하고, 할당하는 메모리를 0으로 초기화한다. hProcess 특정 프로세스의 핸들이며 이 프로세스의 가상 주소 공간 안에 메모리 영역을 할당한다. 이 핸들은 반드시 PROCESS_VM_OPERTATION 권한을 가지고 있어야한다. 권한에 대한 자세한 정보는 MSDN 에서 확인할 수 있다. lpAddress 할당할 페이지 영역에 대해 시작주소를 지정하는 포인터이다. lpAddress 가 NULL..
HANDLE OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId); OpenProcess 함수는 실행되고있는 로컬 프로세스의 HANDLE 을 받아오는 역할을 한다. dwDesiredAccess 프로세스 객체의 접근 권한이다. 이 파라미터 MSDN : Process Access Right 에서 확인할 수 있으며 하나 또는 그 이상일 수 있다. bInheritHandle 이 파라미터의 값이 Ture 라면 이 프로세스에 의해 생성된 프로세스가 핸들을 상속받게된다. False 일 경우 프로세스는 핸들을 상속 받지 않는다. dwProcessId 핸들을 가져올 로컬프로세스의 식별자를 의미한다. 이 파라미터의 값을 GetCurrentPr..
typedef struct tagSTATSTG { LPOLESTR pwcsName; DWORD type; ULARGE_INTEGER cbSize; FILETIME mtime; FILETIME ctime; FILETIME atime; DWORD grfMode; DWORD grfLocksSupported; CLSID clsid; DWORD grfStateBits; DWORD reserved; } STATSTG; STATSTG 구조체에는 open storage, stream 또는 바이트 배열 객체에 대한 통계 데이터가 포함되어있다. 또한 이 구조체는 IEnumSTATSTG, ILockBytes, IStream 인터페이스에서 사용된다. pwcsName 이름을 포함하는 NULL 종단 유니코드 문자열에 대한 포인터..