Legacy/뇌자극 - WinSysProg

2014.12.23 Polymorphic 자료형

Foo 2014. 12. 23. 12:54
728x90

Polymorphic 자료형

1
2
3
4
5
6
7
8
9
10
11
12
13
#if defined (_WIN64)
    typedef __int64    LONG_PTR;
    typedef unsigned __int64    ULONG_PTR;
 
    typedef __int64 INT_PTR;
    typedef unsigned __int64 UINT_PTR;
#else
    typedef long LONG_PTR;
    typedef unsigned long    ULONG_PTR;
    
    typedef int INT_PTR;
    typedef unsigned int UINT_PTR;
#endif
cs

PTR이 붙어있지만 포인터는 아님!

포인터값 기반의 산술연산을 위해 정의된 자료형이기 때문에 PTR이 붙음


오류의 확인

GetLastError 함수 사용

오류가 발생했을 때, 이어서 바로 GetLastError 함수를 호출하면 오류의 원인에 해당하는 에러코드를 얻을 수 있음.

DWORD GetLastError(void);

MSDN을 참조하면 시스템 에러코드의 종류와 해당 에러코드가 의미하는 바를 알 수 있음.

링크 => http://msdn.microsoft.com/ko-kr/library/windows/desktop/ms681381(v=vs.85).aspx


예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
 
 
int _tmain(void)
{
    HANDLE hFile = 
        CreateFile( _T("ABC.DAT"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
    _tprintf( _T("error code: %d \n"), GetLastError() );
 
    hFile = 
        CreateFile( _T("ABC2.DAT"), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL );
    _tprintf( _T("error code: %d \n"), GetLastError() );
 
    return 0;
}
cs