mirror of
https://github.com/momo5502/hypervisor.git
synced 2025-04-19 21:52:55 +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"]
|
[submodule "external/FindWDK"]
|
||||||
path = external/FindWDK
|
path = external/FindWDK
|
||||||
url = https://github.com/SergiusTheBest/FindWDK.git
|
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)
|
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)
|
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
|
||||||
|
|
||||||
project(secret LANGUAGES C CXX)
|
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)
|
add_subdirectory_and_get_targets("src" SRC_TARGETS)
|
||||||
targets_set_warnings_as_errors(${SRC_TARGETS})
|
targets_set_warnings_as_errors(${SRC_TARGETS})
|
||||||
|
@ -33,6 +33,7 @@ endmacro()
|
|||||||
macro(enable_driver_support)
|
macro(enable_driver_support)
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/external/FindWDK/cmake")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/external/FindWDK/cmake")
|
||||||
find_package(WDK REQUIRED)
|
find_package(WDK REQUIRED)
|
||||||
|
list(REMOVE_ITEM WDK_COMPILE_FLAGS /kernel)
|
||||||
endmacro()
|
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>"
|
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"
|
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)
|
#define HELLO_DRV_IOCTL CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||||
|
|
||||||
_Function_class_(DRIVER_DISPATCH)
|
_Function_class_(DRIVER_DISPATCH)
|
||||||
|
|
||||||
NTSTATUS IrpNotImplementedHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
NTSTATUS IrpNotImplementedHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||||
{
|
{
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
@ -23,6 +24,7 @@ NTSTATUS IrpNotImplementedHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_Function_class_(DRIVER_DISPATCH)
|
_Function_class_(DRIVER_DISPATCH)
|
||||||
|
|
||||||
NTSTATUS IrpCreateCloseHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
NTSTATUS IrpCreateCloseHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||||
{
|
{
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
@ -56,6 +58,7 @@ VOID IrpUnloadHandler(IN PDRIVER_OBJECT DriverObject)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_Function_class_(DRIVER_DISPATCH)
|
_Function_class_(DRIVER_DISPATCH)
|
||||||
|
|
||||||
NTSTATUS IrpDeviceIoCtlHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
NTSTATUS IrpDeviceIoCtlHandler(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
|
||||||
{
|
{
|
||||||
ULONG IoControlCode = 0;
|
ULONG IoControlCode = 0;
|
||||||
@ -162,6 +165,18 @@ void unload(PDRIVER_OBJECT DriverObject)
|
|||||||
IrpUnloadHandler(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*/)
|
extern "C" NTSTATUS DriverEntry(const PDRIVER_OBJECT DriverObject, PUNICODE_STRING /*RegistryPath*/)
|
||||||
{
|
{
|
||||||
DriverObject->DriverUnload = unload;
|
DriverObject->DriverUnload = unload;
|
||||||
@ -182,6 +197,8 @@ extern "C" NTSTATUS DriverEntry(const PDRIVER_OBJECT DriverObject, PUNICODE_STRI
|
|||||||
|
|
||||||
debug_log("Final i = %i\n", i);
|
debug_log("Final i = %i\n", i);
|
||||||
|
|
||||||
|
throw_test();
|
||||||
|
|
||||||
return create_io_device(DriverObject);
|
return create_io_device(DriverObject);
|
||||||
|
|
||||||
//return STATUS_SUCCESS;
|
//return STATUS_SUCCESS;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user