1
0
mirror of https://github.com/momo5502/hypervisor.git synced 2025-07-02 01:01:57 +00:00

Add exception support

This commit is contained in:
momo5502
2022-03-15 21:07:47 +01:00
parent 9823c7d62e
commit f744238aad
7 changed files with 65 additions and 1 deletions

View File

@ -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)

View File

@ -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;