DLL 코드 작성


DLL 코드에는 winMain 함수처럼


DllMain 콜백 함수가 정의 된다.


DllMain을 정의하지 않더라도 컴파일이 되는데, 이는 컴파일러가 내용이 텅 빈(empty) dummy code를 삽입하기 때문이다.


반드시 필요하지만 정의하지 않을경우 컴파일러가 Default DllMain을 삽입해준다는 소리다.



DllMain 함수의 모양은 아래와 같다.


BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
{
    switch(dwReason)
    {
    case DLL_PROCESS_ATTACH:
        break;

    case DLL_PROCESS_DETACH:
        break;

    }

    return TRUE;
}


일단 첫 번째  인자는 winMain의 hInstance와 같은 역할을 하는 DLL자신의 인스턴스이다.


두 번째 인자 dwReason은 DLL이 호출된 이유를 담고 있다. 위 Switch 문이 그 값에 해당한다.

DLL_PROCESS_ATTACH: DLL파일이 처음 프로세스에 로딩되었을 때 (ex : LoadLibrary() 호출)

DLL_PROCESS_DETACH: DLL파일이 프로세스에서 해제 되었을 때  (ex : FreeLibrary() 호출)

이 외에도 스레드 관련 값이 2개 더 있다. (MSDN 참조)





Posted by $Zero
:

Oracle 을 설치할때 DISPLAY변수 문제가 뜨는건 로그인할때의 계정과 오라클 인스톨 실행파일의 실행 계정이 달라서이다. 


Oracle설치는 X-Window로 진행되다보니 모니터환경설정을 조사하는데 


이때 모니터 환경조사에 사용되는 /usr/bin/xdpyinfo는 x-window로 로그인을 했던 계정만이 참조할 수 있다 . 


때문에 오라클 설치시 oracle 전용계정이 아닌 다른 계정으로 로그인 한 경우 설치가 진행되지 않는다. 


로그아웃후 oracle계정으로 로그인해서 진행하면 정상적인 설치가 진행된다. 

Posted by $Zero
:

1. mysql  프로세스 kill
 
2.싱글모드로 실행
./mysql/bin/mysqld_safe --user=mysql --skip-grant-tables &

3. root 패스워드를 변경

mysql> use mysql;
mysql> update user set password=password('새로운암호입력') where user='root';
mysql> flush privileges;

Posted by $Zero
: