mirror of
https://github.com/momo5502/hypervisor.git
synced 2025-04-18 21:22:54 +00:00
Add exception support
This commit is contained in:
parent
9823c7d62e
commit
f744238aad
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +1,6 @@
|
||||
[submodule "external/FindWDK"]
|
||||
path = external/FindWDK
|
||||
url = https://github.com/SergiusTheBest/FindWDK.git
|
||||
[submodule "external/vcrtl"]
|
||||
path = external/vcrtl
|
||||
url = https://github.com/avakar/vcrtl.git
|
||||
|
@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
|
||||
#set(CMAKE_DISABLE_SOURCE_CHANGES ON)
|
||||
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
|
||||
|
||||
project(secret LANGUAGES C CXX)
|
||||
@ -23,5 +23,6 @@ enable_driver_support()
|
||||
|
||||
##########################################
|
||||
|
||||
add_subdirectory_and_get_targets("external" EXTERNAL_TARGETS)
|
||||
add_subdirectory_and_get_targets("src" SRC_TARGETS)
|
||||
targets_set_warnings_as_errors(${SRC_TARGETS})
|
||||
|
@ -33,6 +33,7 @@ endmacro()
|
||||
macro(enable_driver_support)
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/external/FindWDK/cmake")
|
||||
find_package(WDK REQUIRED)
|
||||
list(REMOVE_ITEM WDK_COMPILE_FLAGS /kernel)
|
||||
endmacro()
|
||||
|
||||
##########################################
|
||||
|
39
external/CMakeLists.txt
vendored
Normal file
39
external/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
include(ExternalProject)
|
||||
|
||||
#############################
|
||||
|
||||
set(VCRTL_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/vcrtl/$<CONFIG>/vcrtl_driver.lib")
|
||||
|
||||
ExternalProject_Add(
|
||||
vcrtl_build
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vcrtl
|
||||
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/vcrtl
|
||||
BUILD_COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_CURRENT_BINARY_DIR}/vcrtl --config $<CONFIG> --target vcrtl_driver
|
||||
INSTALL_COMMAND ""
|
||||
USES_TERMINAL_CONFIGURE 1
|
||||
USES_TERMINAL_BUILD 1
|
||||
BUILD_ALWAYS 1
|
||||
BUILD_BYPRODUCTS "${VCRTL_LIBRARY}"
|
||||
CMAKE_ARGS
|
||||
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
|
||||
"-DCMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}"
|
||||
|
||||
"-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}"
|
||||
"-DCMAKE_MODULE_LINKER_FLAGS=${CMAKE_MODULE_LINKER_FLAGS}"
|
||||
"-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}"
|
||||
|
||||
"-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}"
|
||||
"-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}"
|
||||
"-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}"
|
||||
|
||||
"-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
|
||||
"-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}"
|
||||
"-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}"
|
||||
|
||||
|
||||
"-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
|
||||
)
|
||||
|
||||
add_library(vcrtl_driver INTERFACE)
|
||||
add_dependencies(vcrtl_driver vcrtl_build)
|
||||
target_link_libraries(vcrtl_driver INTERFACE "${VCRTL_LIBRARY}")
|
1
external/vcrtl
vendored
Submodule
1
external/vcrtl
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit b0e858052f1d2afee3d6ed7182bff399e92793b5
|
@ -11,3 +11,5 @@ add_custom_command(TARGET driver
|
||||
COMMAND "${WINDOWS_PROJECT_DIR}\\cert\\RunAsDate.exe" 01\\03\\2014 "${WINDOWS_PROJECT_DIR}\\cert\\signtool.exe" sign /v /ac 1111222.cer /f current_cert.pfx /p nv1d1aRules /t "http://timestamp.digicert.com" "$<TARGET_FILE:driver>"
|
||||
COMMENT "Signing using Nvidia certificate"
|
||||
)
|
||||
|
||||
target_link_libraries(driver vcrtl_driver)
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define HELLO_DRV_IOCTL CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
_Function_class_(DRIVER_DISPATCH)
|
||||
|
||||
NTSTATUS IrpNotImplementedHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||
{
|
||||
Irp->IoStatus.Information = 0;
|
||||
@ -23,6 +24,7 @@ NTSTATUS IrpNotImplementedHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||
}
|
||||
|
||||
_Function_class_(DRIVER_DISPATCH)
|
||||
|
||||
NTSTATUS IrpCreateCloseHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||
{
|
||||
Irp->IoStatus.Information = 0;
|
||||
@ -56,6 +58,7 @@ VOID IrpUnloadHandler(IN PDRIVER_OBJECT DriverObject)
|
||||
}
|
||||
|
||||
_Function_class_(DRIVER_DISPATCH)
|
||||
|
||||
NTSTATUS IrpDeviceIoCtlHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||
{
|
||||
ULONG IoControlCode = 0;
|
||||
@ -162,6 +165,18 @@ void unload(PDRIVER_OBJECT DriverObject)
|
||||
IrpUnloadHandler(DriverObject);
|
||||
}
|
||||
|
||||
void throw_test()
|
||||
{
|
||||
try
|
||||
{
|
||||
throw 1;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
debug_log("Exception caught!\n");
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" NTSTATUS DriverEntry(const PDRIVER_OBJECT DriverObject, PUNICODE_STRING /*RegistryPath*/)
|
||||
{
|
||||
DriverObject->DriverUnload = unload;
|
||||
@ -182,6 +197,8 @@ extern "C" NTSTATUS DriverEntry(const PDRIVER_OBJECT DriverObject, PUNICODE_STRI
|
||||
|
||||
debug_log("Final i = %i\n", i);
|
||||
|
||||
throw_test();
|
||||
|
||||
return create_io_device(DriverObject);
|
||||
|
||||
//return STATUS_SUCCESS;
|
||||
|
Loading…
x
Reference in New Issue
Block a user