강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Desktop Application

Windows System Programming - Basics

A must-take course for anyone thinking of becoming a Windows programmer! Have you studied C/C+, data structures, and operating system theory? If so, studying system programming is the answer now. Now it's time for practice!

(5.0) 34 reviews

985 learners

  • nullnull8537
저자 직강
win32api
C
vc++
system-programming

Reviews from Early Learners

What you will learn!

  • Theory on Windows System Security System

  • Multithreaded programming and synchronization techniques

  • Synchronous/asynchronous file input/output techniques

  • Virtual memory system and memory operation techniques

  • Process management and shared memory-based IPC techniques

  • Creating and using DLL libraries

The basics of system programming,
We'll get to the point!

If you are a C/C++ Windows developer
System programming you must know.

Jeffrey Richter's "Windows Via C/C++"
Did it feel too difficult?

You can now understand the book 『Windows Via C/C++ 5th edition』, which is known as the bible of system programming but is difficult to understand!

Attention Game Server Developers and Windows Application Developers!

Those aspiring to become Windows application developers, including game developers, learn C/C++ and data structures. They also study some CS theory. However, they often feel that this alone isn't enough . They know that systems programming is a must-have programming skill for becoming a professional developer, but the moment they open the book, they realize it's not an easy path, and self-study is impossible.

The solution is simple! Just as a high-level understanding begins with memorization, it's essential to fully master the core theories and examples that underpin systems programming.

So, I recommend it to these people.

Anyone who needs to develop C/C++ based Windows applications

Application developers based on older technologies such as MFC or Win32 API

Those who aspire to be game server programmers

System programming learners who want to experience the theory of operating systems at the code level.


The core of system programming
Let me explain it in an easy-to-understand way!

  • 1️⃣ You can understand the core theories such as understanding of multi-threaded programming environment and synchronization techniques.
  • 2️⃣ By re-experiencing the theories you encountered while studying operating systems at the code level, your level of understanding of CS knowledge will significantly increase.
  • 3️⃣ By actively utilizing the services provided by the operating system, including synchronous/asynchronous input/output, you can develop practical applications that are guaranteed to have high performance .
  • 4️⃣ You can independently understand various theories and cases required for Windows application development, including high-performance servers.

This course explains the core theories of systems programming in an easy-to-understand manner! It's no exaggeration to say that the core of CS theory lies in operating systems and computer architecture. Native languages like C/C++ are difficult because they require a certain level of understanding of CS theory. This course will play a pivotal role in providing programming experience with the core systems theories essential for advancing to the pinnacle of CS theory.


In learning system programming
Essential theory that is absolutely necessary.

We've condensed the theory you need to learn to the utmost extent possible, keeping only the essentials!

  • ✅ Windows Security System
  • ✅ Multithreaded programming techniques (creation and synchronization)
  • ✅ Synchronous/asynchronous file input/output techniques using Win32 API
  • ✅ Virtual memory system, heap, memory map
  • ✅ Shared memory-based IPC
  • ✅ DLL library creation technique

Process execution and privilege inheritance

Acquiring and committing independent virtual memory per process

64KB allocation size and 4KB page memory structure

Studying from Bible-level books is a good option, but it's never easy for beginners. No matter how good the content, it can be difficult to understand. This course is designed to open the way for you to more easily approach these difficult theories.


Q&A 💬

Q. Do I have to learn system programming to become a Windows application developer?

Yes, you absolutely must learn it. Even if you're simply developing a GUI, you'll often need a solid understanding of most of the theories covered in systems programming to solve problems.

Q. I'm a job seeker hoping to become a game developer. Will this course be helpful?

For game developers, systems programming isn't optional, it's essential. You need to master the basics covered in this course. You'll also need to study more advanced theories. However, after completing this course, you'll be able to understand the concepts on your own, even when you consult related materials.

Q. Do I need to take this course to become a security software developer?

If you want to develop software like V3, understanding systems programming theory is essential. Before moving on to kernel driver development, understanding systems programming is essential. Learning various attack/defense techniques, including reverse engineering, is difficult without understanding systems programming theory.

Q. I've only studied the C language and data structures. Can I still take this course?

Yes, you can. However, if you haven't studied operating systems, the content may be somewhat difficult. And even if you've studied the C language, you should definitely understand the following:

  • function pointer
  • Memory Class Specifiers and Memory Management
  • Stack frame designation principle
  • Binary file input/output

💾 Please check before taking the class.

  • This lecture is titled "Windows System Programming - Basics" and "Windows System Programming - Applications" will be released later.
  • This course uses Windows 11 and the Community version of Visual Studio 2022. Anyone with a Windows 10 or higher operating system and a PC capable of running VScode 2022 can easily take the course.
  • We provide PDFs and full example source code used in the lecture.
  • This course is designed for those with a basic understanding of the C language and experience implementing linear data structures like linked lists . Experience using development tools like Visual Studio in a Windows OS environment is also recommended. For more detailed prerequisite information, please refer to the information below.
    • C language and data structures, and some C++ language grammar (you can take the course even if you don't know anything about it)
    • Lecture "Becoming a Computer Science Major by Memorizing Broadly and Deeply"
    • Lecture "Minimal Operating System Theory: Easily Learned with Bear Book"
    • Lecture "C Programming: A Thorough Review" (Most Important Pre-requisite Knowledge)

Recommended for
these people

Who is this course right for?

  • Anyone who wants to develop Windows system control software

  • Anyone who wants to develop security software or game servers

  • Anyone who needs to develop C/C++ Windows-based applications

Need to know before starting?

  • C programming that is deeply reminiscent

  • Understanding data structures

  • Operating system knowledge of virtual memory

  • Experience using development tools in a Windows environment (cf. VSCode)

Hello
This is

37,015

Learners

2,152

Reviews

1,098

Answers

4.9

Rating

24

Courses

널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다.  반갑습니다. ^^  

Curriculum

All

40 lectures ∙ (11hr 10min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

34 reviews

5.0

34 reviews

  • wjdwlgns8096님의 프로필 이미지
    wjdwlgns8096

    Reviews 2

    Average Rating 5.0

    5

    30% enrolled

    • 널널한 개발자
      Instructor

      좋은 평가 고맙습니다. :)

  • Sub님의 프로필 이미지
    Sub

    Reviews 3

    Average Rating 5.0

    5

    30% enrolled

  • sunny75님의 프로필 이미지
    sunny75

    Reviews 95

    Average Rating 5.0

    5

    100% enrolled

    (25/07/26/토 09:41) 강의의 많은 내용으로, 정말 많은 도움을 받고 있습니다. 동기화가 중요하다는 생각을 하게 되네요. 강의 중 주의사항에서 경험하신 내용을 말씀해 주시니, 좋은 것 같습니다. 좋은 강의 만들어 주셔서 감사합니다.

    • 정말 어마무시하게 달리시는 군요. 이제는 살짝 무서울 정돕니다. 아무튼 이 기세를 응원합니다. :)

  • 무무님의 프로필 이미지
    무무

    Reviews 6

    Average Rating 5.0

    Edited

    5

    100% enrolled

    멀티스레드 환경에 대한 기초 공부 및 C언어에서의 입.출력 함수 및 함수포인터를 왜 배우는지 알게 해주는 과정이었습니다. ====== 이번에 시스템 프로그래밍을 공부하면서 및 C언어 입력,출력을 복습하게 될 계기가 생겼습니다. (2번 정도 봤지만 써야 될 상황이 없었어서 빠르게 넘겼었습니다.) 가장 어려운 파트는 WIN32 파일 입/출력 파트였습니다. 그 전엔 CS 기초지식 및 OS 운영체제 파트에서 눈에 익도록 봐서 적응에 어려움이 없었지만 해당 파트는 본 적도 없었어서 무슨 말인지 모르겠고... 예제를 어떻게 작성하라는지 모르겠다 하다가 3~4번 복습 하고 하루 휴식하고 보니 이상하게 내용이 간단하게 보이고 이해가 되었습니다. 물론 코파일럿과 GPT의 도움으로 자료형과 함수가 왜 호출되고 사용되는지 공부한 건 덤 입니다. === 위의 과정을 거치고 소켓 프로그래밍 - 네트워크 프로그래밍 학습을 가보려고 합니다. 마침 학원이라 컴퓨터가 많아서 컴퓨터 4대로 실습 할 수 있으면 좋다(?) 는 내용을 봤어서 공부하기 더할 나위 없다고 생각 합니다. === 마지막으로 현재 제가 겪는 상황들을 적는 것도 정신적으로 어려움을 겪으시는 분들께 도움되지 않을까해서 적어봅니다. (현재 자바 스프링 목표 백엔드 공부 기간 3개월째 (최소 1년 반 보는 중) 현재 저는 월~일 주 7일 근무를 돌리고 있습니다. (월-토는 새벽 6시 30분 - 10시 30분 / 일요일은 출퇴근시간 포함 아침 7시 - 저녁 10시) --- 저번 주부터 이번 주까지 돈에 관련되서 정말 많은 고민을 했습니다. 월요일부터 일요일까지 일을 해서 버는 돈은 160인데, 만약 공부를 포기하고 시간을 늘려서 일을 하면 260 ~ 430까지 받을 수 있는 상황인 것이죠. 그래서 차라리 일을 바짝 땡겨서 돈을 버는 것이 낫지 않나라는 충동적인 생각이 들었습니다. 그 충동의 원인은 현재 AI로 IT 업종 기준 자체가 상향평준화가 되고 제가 목표로 하고 있는 것이 서버 개발직군이 Google 개발자들의 코드리뷰로 학습하는 GPT 및 AI들이 그걸 못 따라올까? 앞 길을 모르겠는데, 돈을 미친듯이 바짝 땡기는게 낫지 않나.. 내가 과연 이 업계에 합격하고 경력이 쌓이면 AI보다 더 잘 할 수 있나? 등의 불안과 고민으로 우울증을 심하게 겪었습니다. 현재는 어제까지 3일 정도 푹 쉬고 마음을 정리했습니다. 정답은 없고 지금 하는 공부가 재밌기에 이대로 가자! 후에 상황이 어떻게 될지 모르니 돈은 최대한 모으자! 라는 방향으로 툴툴 넘기고 다시 공부를 하고 있습니다. 불안은 미래의 내가 더 잘 되기 위해 과잉 고민을 / 무기력은 정서적인 에너지를 충전하라고 신호를 보내는 것이라고 하더라고요. 다들 힘들시겠지만 화이팅 입니다!

    • 고민스러운 대전환의 시대를 살아가는 한 개인의 고민이 오롯이 드러나는 피드백 고맙습니다. 저 역시 비슷한 고민을 하고 있는 중년의 가장이라 더 마음이 가네요. 돈...정말 중요합니다. 어떤 연예인이 그런 말을 하더라고요. 사람은 가도 돈은 남더라는...자본주의 사회에서 자신의 이익을 추구하는 것은 매우 당연하지요. 학습도 경쟁력을 갖추는 좋은 수단 중 하나입니다. 그렇게 실력을 쌓아 돈도 많이 많이 버시기를 바라고 응원하겠습니다. 잘 되실 겁니다. 고맙습니다. :)

  • 시아님의 프로필 이미지
    시아

    Reviews 2

    Average Rating 5.0

    5

    30% enrolled

$84.70

nullnull8537's other courses

Check out other courses by the instructor!

Similar courses

Explore other courses in the same field!