비트교육/system_programming 3

windows_system_programming(1) - kernel object

YouTube 강의 -> 커널 오브젝트의 이해 이것을 참고했습니다. 커널 오브젝트 : 커널에 의해 관리되는 리소스 정보를 담고있는 데이터 블록 운영체제에 의해 생성 및 소멸되는 것을 리소스라고 합니다. 우리가 파일을 생성, 소멸 시키는 것도 리소스입니다. 하지만 운영체제에 의해 생성, 소멸되는 리소스가 있는데 이것이 커널 오브젝트입니다. 파일 뿐만아니라 핸들, 쓰레드 등등 os가 자동으로 생성해주는 경우에도 커널 오브젝트가 생기게 됩니다. 우리가 어떤 파일을 생성 소멸 시킬 경우 리소스에 대한 요구사항이 있습니다. 이 요구사항을 들어주는 것이 커널입니다. 요구사항을 들어주기 위해서는 리소스를 컨트롤할 수 있는 정보들(접근정보, 파일을 어디까지 읽었는지에 대한 정보)을 가지고 있어야 하는데 이런 정보를 담..

환경변수 나타내기

이번에는 환경변수를 콘솔창에 나타내는 실습을 하겠습니다. #include #include #include #include #include void GetEnv() { PTSTR pEnvBlock = GetEnvironmentStrings(); //환경블럭 내용을 가져와서 문자열 블럭으로 메모리에 생성 후 그 포인터를 반환 TCHAR szName[MAX_PATH]; TCHAR szValue[MAX_PATH]; PTSTR pszCurrent = pEnvBlock; HRESULT hr = S_OK; PCTSTR pszPos = NULL; int current = 0; ZeroMemory(szName, MAX_PATH); //메모리 0으로 초기화 ZeroMemory(szValue, MAX_PATH); while..

error 나타내주기

이번에는 error을 나타내주는 실습을 해보겠습니다. 이 코드는 윈도우속성-> 링커-> 시스템-> 창모드로 해야합니다. 시작하기에 앞서, 이것은 유니코드나 멀티바이트코드 어디에서나 사용가능하게 알아서 바꿔주는 매크로 함수입니다. LPTSTR, _tWinMain등 t가 붙어있는 것들은 f12로 들어가서 보면 유니코드 경우와 멀티바이트 경우와 다르다는 것을 볼 수 있습니다. #include #include //유니코드, 멀티바이트 코드 무엇을 쓰든지 확인해서 바꿔주는 메크로 #define MAX_LOADSTRING 100 TCHAR szTitle[MAX_LOADSTRING] = TEXT("Sample"); TCHAR szWindowClass[MAX_LOADSTRING] = TEXT("Bit"); HWND h..