1. 새 프로젝트 만들기 → Empty WDM Driver
2. 프로젝트 생성 후 .inf 파일 삭제
3. 프로젝트에 main.cpp 추가
4. IDE → 보기 → 다른 창 → 속성 관리자 클릭
5. Debug | x64 선택 후 우 클릭 → 새 프로젝트 속성 시트 추가 → 속성 시트(.props) 추가
6. 추가 한 속성 시트 우 클릭 → 속성 클릭
7. 공용 속성 → 사용자 매크로 → 매크로 추가
이름 : DisableKernelFlag
값 : true
8. 프로젝트 →  속성 → 구성 속성 → C/C++ → 코드 생성 → C++ 예외 처리 가능 → 예(/EHsc)
9. 프로젝트 →  속성 → 구성 속성 → 일반  → C++ 언어 표준 → 미리 보기 - ISO C++23 표준
10. x64 Native Tools Command Prompt for VS 2022 실행
11. vcrtl 다운로드 및 vcrtl 프로젝트 실행

git clone https://github.com/avakar/vcrtl
cd vcrtl
cmake .
vcrtl.sln

12. vcrtl 프로젝트 →  속성 → 구성 속성 → 일반  → C++ 언어 표준 → 미리 보기 - ISO C++23 표준
13. vcrtl 빌드 및 산출물 .lib을 내 프로젝트에 복사
14. 내 프로젝트 →  속성 → 구성 속성 → 링커 → 입력 → 추가 종속성 → vcrtl_driver.lib
15. main.cpp 작성 및 빌드

#include <ntifs.h>

EXTERN_C VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{
	UNREFERENCED_PARAMETER(DriverObject);
}

EXTERN_C NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegPath)
{

	UNREFERENCED_PARAMETER(RegPath);
	DriverObject->DriverUnload = DriverUnload;

	try {
		throw 1;
	}
	catch (int i) {
		KdPrint(("catch");
	}

	return STATUS_SUCCESS;
}

 

 

제목 설명
Empty Static Library for Drivers (Universal) 유니버설 드라이버용 정적 드라이버 라이브러리를 만들기 위한 빈 프로젝트
WinUSB Application (Universal) USB 장치에 액세스하기 위한 유니버설 애플리케이션 스켈레톤
Kernel Mode Driver, USB (KMDF) Kernel-Mode Driver Framework(KMDF)를 사용하는 USB 장치 프로젝트. 기본값으로 유니버설 드라이버로 빌드됨
Filter Driver: NDIS NDIS 필터 드라이버용 프로젝트. 기본값으로 유니버설 드라이버로 빌드됨
User Mode Driver, USB (UMDF v2) User-Mode Driver Framework v2(UMDF2)를 사용하는 USB 장치 프로젝트. 기본값으로 유니버설 드라이버로 빌드됨
Driver Install Package 하나 이상의 드라이버 프로젝트에서 생성된 드라이버 파일을 포함하는 드라이버 패키지를 만드는 프로젝트
WinUSB INF Driver Package USB 장치에 WinUSB를 로드하는 데 사용할 수 있는 .INF 파일을 드라이버 패키지에 생성
Kernel Mode Driver (KMDF) Kernel-Mode Driver Framework(KMDF)를 사용하는 기본 프로젝트. 기본값으로 유니버설 드라이버로 빌드됨
Kernel Mode Driver, Empty (KMDF) Kernel-Mode Driver Framework(KMDF)를 사용하는 빈 프로젝트. 기본값으로 유니버설 드라이버로 빌드됨
User Mode Driver (UMDF v2) User-Mode Driver Framework v2(UMDF2)를 사용하는 기본 프로젝트. 기본값으로 유니버설 드라이버로 빌드됨
User Mode Driver, Empty (UMDF v2) User-Mode Driver Framework v2(UMDF2)를 사용하는 빈 프로젝트. 기본값으로 유니버설 드라이버로 빌드됨
Empty WDM Driver WDM 드라이버를 만들기 위한 빈 프로젝트
Printer Driver v4 V4 프린터 드라이버 프로젝트(GPD 또는 PPD 기반). 프린터 드라이버는 Windows 데스크톱 장치에서만 실행 가능
Printer Driver v4 Property Bag V4 프린터 드라이버의 프로퍼티 백(project) 프로젝트. 프린터 드라이버는 Windows 데스크톱 장치에서만 실행 가능
Printer XPS Render Filter 프린터 드라이버용 XPS 렌더 필터 프로젝트. 프린터 드라이버는 Windows 데스크톱 장치에서만 실행 가능
Empty Desktop Application for Drivers (Universal) 유니버설 드라이버와 상호작용하는 애플리케이션을 만들기 위한 빈 프로젝트

 

+ Recent posts