diff --git a/tests/driver/cmake.toml b/tests/driver/cmake.toml deleted file mode 100644 index 2c249ca..0000000 --- a/tests/driver/cmake.toml +++ /dev/null @@ -1,19 +0,0 @@ -# A project using templates to build a driver. - -[project] -name = "driver" -description = "Driver example" -cmake-after = "list(APPEND CMAKE_MODULE_PATH cmake)" - -[find-package] -WDK = { required = true } - -[template.driver] -type = "shared" -add-function = "wdk_add_driver" -pass-sources-to-add-function = true - -[target.cool-driver] -type = "driver" -sources = ["src/DriverEntry.cpp"] - diff --git a/tests/driver/cmake/FindWdk.cmake b/tests/driver/cmake/FindWdk.cmake deleted file mode 100644 index 011bf95..0000000 --- a/tests/driver/cmake/FindWdk.cmake +++ /dev/null @@ -1,179 +0,0 @@ -# Redistribution and use is allowed under the OSI-approved 3-clause BSD license. -# Copyright (c) 2018 Sergey Podobry (sergey.podobry at gmail.com). All rights reserved. - -#.rst: -# FindWDK -# ---------- -# -# This module searches for the installed Windows Development Kit (WDK) and -# exposes commands for creating kernel drivers and kernel libraries. -# -# Output variables: -# - `WDK_FOUND` -- if false, do not try to use WDK -# - `WDK_ROOT` -- where WDK is installed -# - `WDK_VERSION` -- the version of the selected WDK -# - `WDK_WINVER` -- the WINVER used for kernel drivers and libraries -# (default value is `0x0601` and can be changed per target or globally) -# -# Example usage: -# -# find_package(WDK REQUIRED) -# -# wdk_add_library(KmdfCppLib STATIC KMDF 1.15 -# KmdfCppLib.h -# KmdfCppLib.cpp -# ) -# target_include_directories(KmdfCppLib INTERFACE .) -# -# wdk_add_driver(KmdfCppDriver KMDF 1.15 -# Main.cpp -# ) -# target_link_libraries(KmdfCppDriver KmdfCppLib) -# - -if(DEFINED ENV{WDKContentRoot}) - file(GLOB WDK_NTDDK_FILES - "$ENV{WDKContentRoot}/Include/*/km/ntddk.h" - ) -else() - file(GLOB WDK_NTDDK_FILES - "C:/Program Files*/Windows Kits/10/Include/*/km/ntddk.h" - ) -endif() - -if(WDK_NTDDK_FILES) - list(GET WDK_NTDDK_FILES -1 WDK_LATEST_NTDDK_FILE) -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(WDK REQUIRED_VARS WDK_LATEST_NTDDK_FILE) - -if (NOT WDK_LATEST_NTDDK_FILE) - return() -endif() - -get_filename_component(WDK_ROOT ${WDK_LATEST_NTDDK_FILE} DIRECTORY) -get_filename_component(WDK_ROOT ${WDK_ROOT} DIRECTORY) -get_filename_component(WDK_VERSION ${WDK_ROOT} NAME) -get_filename_component(WDK_ROOT ${WDK_ROOT} DIRECTORY) -get_filename_component(WDK_ROOT ${WDK_ROOT} DIRECTORY) - -message(STATUS "WDK_ROOT: " ${WDK_ROOT}) -message(STATUS "WDK_VERSION: " ${WDK_VERSION}) - -set(WDK_WINVER "0x0601" CACHE STRING "Default WINVER for WDK targets") - -set(WDK_ADDITIONAL_FLAGS_FILE "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/wdkflags.h") -file(WRITE ${WDK_ADDITIONAL_FLAGS_FILE} "#pragma runtime_checks(\"suc\", off)") - -set(WDK_COMPILE_FLAGS - "/Zp8" # set struct alignment - "/GF" # enable string pooling - "/GR-" # disable RTTI - "/Gz" # __stdcall by default - "/kernel" # create kernel mode binary - "/FIwarning.h" # disable warnings in WDK headers - "/FI${WDK_ADDITIONAL_FLAGS_FILE}" # include file to disable RTC - ) - -set(WDK_COMPILE_DEFINITIONS "WINNT=1") -set(WDK_COMPILE_DEFINITIONS_DEBUG "MSC_NOOPT;DEPRECATE_DDK_FUNCTIONS=1;DBG=1") - -if(CMAKE_SIZEOF_VOID_P EQUAL 4) - list(APPEND WDK_COMPILE_DEFINITIONS "_X86_=1;i386=1;STD_CALL") - set(WDK_PLATFORM "x86") -elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - list(APPEND WDK_COMPILE_DEFINITIONS "_WIN64;_AMD64_;AMD64") - set(WDK_PLATFORM "x64") -else() - message(FATAL_ERROR "Unsupported architecture") -endif() - -string(CONCAT WDK_LINK_FLAGS - "/MANIFEST:NO " # - "/DRIVER " # - "/OPT:REF " # - "/INCREMENTAL:NO " # - "/OPT:ICF " # - "/SUBSYSTEM:NATIVE " # - "/MERGE:_TEXT=.text;_PAGE=PAGE " # - "/NODEFAULTLIB " # do not link default CRT - "/SECTION:INIT,d " # - "/VERSION:10.0 " # - ) - -# Generate imported targets for WDK lib files -file(GLOB WDK_LIBRARIES "${WDK_ROOT}/Lib/${WDK_VERSION}/km/${WDK_PLATFORM}/*.lib") -foreach(LIBRARY IN LISTS WDK_LIBRARIES) - get_filename_component(LIBRARY_NAME ${LIBRARY} NAME_WE) - string(TOUPPER ${LIBRARY_NAME} LIBRARY_NAME) - add_library(WDK::${LIBRARY_NAME} INTERFACE IMPORTED) - set_property(TARGET WDK::${LIBRARY_NAME} PROPERTY INTERFACE_LINK_LIBRARIES ${LIBRARY}) -endforeach(LIBRARY) -unset(WDK_LIBRARIES) - -function(wdk_add_driver _target) - cmake_parse_arguments(WDK "" "KMDF;WINVER" "" ${ARGN}) - - add_executable(${_target} ${WDK_UNPARSED_ARGUMENTS}) - - set_target_properties(${_target} PROPERTIES SUFFIX ".sys") - set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${WDK_COMPILE_FLAGS}") - set_target_properties(${_target} PROPERTIES COMPILE_DEFINITIONS - "${WDK_COMPILE_DEFINITIONS};$<$:${WDK_COMPILE_DEFINITIONS_DEBUG}>;_WIN32_WINNT=${WDK_WINVER}" - ) - set_target_properties(${_target} PROPERTIES LINK_FLAGS "${WDK_LINK_FLAGS}") - - target_include_directories(${_target} SYSTEM PRIVATE - "${WDK_ROOT}/Include/${WDK_VERSION}/shared" - "${WDK_ROOT}/Include/${WDK_VERSION}/km" - "${WDK_ROOT}/Include/${WDK_VERSION}/km/crt" - ) - - target_link_libraries(${_target} WDK::NTOSKRNL WDK::HAL WDK::BUFFEROVERFLOWK WDK::WMILIB) - - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - target_link_libraries(${_target} WDK::MEMCMP) - endif() - - if(DEFINED WDK_KMDF) - target_include_directories(${_target} SYSTEM PRIVATE "${WDK_ROOT}/Include/wdf/kmdf/${WDK_KMDF}") - target_link_libraries(${_target} - "${WDK_ROOT}/Lib/wdf/kmdf/${WDK_PLATFORM}/${WDK_KMDF}/WdfDriverEntry.lib" - "${WDK_ROOT}/Lib/wdf/kmdf/${WDK_PLATFORM}/${WDK_KMDF}/WdfLdr.lib" - ) - - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - set_property(TARGET ${_target} APPEND_STRING PROPERTY LINK_FLAGS "/ENTRY:FxDriverEntry@8") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - set_property(TARGET ${_target} APPEND_STRING PROPERTY LINK_FLAGS "/ENTRY:FxDriverEntry") - endif() - else() - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - set_property(TARGET ${_target} APPEND_STRING PROPERTY LINK_FLAGS "/ENTRY:GsDriverEntry@8") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - set_property(TARGET ${_target} APPEND_STRING PROPERTY LINK_FLAGS "/ENTRY:GsDriverEntry") - endif() - endif() -endfunction() - -function(wdk_add_library _target) - cmake_parse_arguments(WDK "" "KMDF;WINVER" "" ${ARGN}) - - add_library(${_target} ${WDK_UNPARSED_ARGUMENTS}) - - set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${WDK_COMPILE_FLAGS}") - set_target_properties(${_target} PROPERTIES COMPILE_DEFINITIONS - "${WDK_COMPILE_DEFINITIONS};$<$:${WDK_COMPILE_DEFINITIONS_DEBUG};>_WIN32_WINNT=${WDK_WINVER}" - ) - - target_include_directories(${_target} SYSTEM PRIVATE - "${WDK_ROOT}/Include/${WDK_VERSION}/shared" - "${WDK_ROOT}/Include/${WDK_VERSION}/km" - "${WDK_ROOT}/Include/${WDK_VERSION}/km/crt" - ) - - if(DEFINED WDK_KMDF) - target_include_directories(${_target} SYSTEM PRIVATE "${WDK_ROOT}/Include/wdf/kmdf/${WDK_KMDF}") - endif() -endfunction() \ No newline at end of file diff --git a/tests/driver/src/DriverEntry.cpp b/tests/driver/src/DriverEntry.cpp deleted file mode 100644 index 9e966c6..0000000 --- a/tests/driver/src/DriverEntry.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include - -extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING registry) { - return STATUS_UNSUCCESSFUL; -}