From f47d4d0acbc2d1abf684de0528d06a2c614f3740 Mon Sep 17 00:00:00 2001 From: benyamin-codez <115509179+benyamin-codez@users.noreply.github.com> Date: Sun, 22 Dec 2024 01:22:41 +1100 Subject: [PATCH] [vioscsi] DriverEntry() improved tracing Addendum to b6edb81, b7904fc and acaf26d. 1. Split NTDDI_ definitions to new file ntddi_ver.h with minor refactor. 2. Minor refactor for RegistryPath reporting to appear outside of conditional. 3. Removed references to obsoleted RUN_MIN_CHECKED definition (PR #1228). Signed-off-by: benyamin-codez <115509179+benyamin-codez@users.noreply.github.com> --- vioscsi/ntddi_ver.h | 68 +++++++++++++++++++++++++++++++++++++++++++++ vioscsi/vioscsi.c | 16 +++++------ vioscsi/vioscsi.h | 27 +----------------- 3 files changed, 77 insertions(+), 34 deletions(-) create mode 100755 vioscsi/ntddi_ver.h diff --git a/vioscsi/ntddi_ver.h b/vioscsi/ntddi_ver.h new file mode 100755 index 000000000..0c8edfca4 --- /dev/null +++ b/vioscsi/ntddi_ver.h @@ -0,0 +1,68 @@ +/* + * This file contains NTDDI_ globals + * + * Copyright (c) 2012-2024 Red Hat, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met : + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and / or other materials provided with the distribution. + * 3. Neither the names of the copyright holders nor the names of their contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef ___NTDDIVER_H__ +#define ___NTDDIVER_H__ + +//#include + +// The following are additional definitions not found in current EWDK(s) +// at \Program Files\Windows Kits\10\Include\10.0..0\shared\sdkddkver.h + +#ifndef NTDDI_WINTHRESHOLD +#define NTDDI_WINTHRESHOLD 0x0A000000 /* ABRACADABRA_THRESHOLD */ +#endif + +#define NTDDI_THRESHOLD NTDDI_WINTHRESHOLD + +#ifndef NTDDI_WIN10_NI +#define NTDDI_WIN10_NI 0x0A00000C // Windows 10.0.22449-22631 / Nickel / 22H2 +#define NTDDI_WIN10_CU 0x0A00000D // Windows 10.0.25057-25236 / Copper / 23H1 +#endif + +#ifndef NTDDI_WIN11 +#define NTDDI_WIN11 NTDDI_WIN10_CO +#define NTDDI_WIN11_CO NTDDI_WIN10_CO // Windows 10.0.21277-22000 / Cobalt / 21H2 +#define NTDDI_WIN11_NI NTDDI_WIN10_NI // Windows 10.0.22449-22631 / Nickel / 22H2 +#define NTDDI_WIN11_CU NTDDI_WIN10_CU // Windows 10.0.25057-25236 / Copper / 23H1 +#endif + +#ifndef NTDDI_WIN11_ZN +#define NTDDI_WIN11_ZN 0x0A00000E // Windows 10.0.25246-25398 / Zinc / 23H2 +#define NTDDI_WIN11_GA 0x0A00000F // Windows 10.0.25905-25941 / Gallium / 24H1 +#define NTDDI_WIN11_GE 0x0A000010 // Windows 10.0.25947-26100 / Germanium / 24H2 +#endif + +#ifndef NTDDI_WIN11_DT +#define NTDDI_WIN11_DT 0x0A000011 // Windows 10.0.27686-27691 / Dilithium / 25H1 +#define NTDDI_WIN11_SE 0x0A000012 // Windows 10.0.27764 / Selenium / 25H2 +#endif + + +#endif ___NTDDIVER_H__ diff --git a/vioscsi/vioscsi.c b/vioscsi/vioscsi.c index f60ecdc87..fc58a28c1 100755 --- a/vioscsi/vioscsi.c +++ b/vioscsi/vioscsi.c @@ -360,18 +360,18 @@ DriverEntry( InitializeDebugPrints((PDRIVER_OBJECT)DriverObject, (PUNICODE_STRING)RegistryPath); IsCrashDumpMode = FALSE; - #if !defined(RUN_UNCHECKED) || defined(RUN_MIN_CHECKED) + #if !defined(RUN_UNCHECKED) RhelDbgPrint(TRACE_LEVEL_FATAL, " VIOSCSI driver started...built on %s %s\n", __DATE__, __TIME__); + memset(&aRegistryPath, 0, sizeof(aRegistryPath)); + u2a_status = RtlUnicodeStringToAnsiString(&aRegistryPath, RegistryPath, TRUE); + if (u2a_status == STATUS_SUCCESS) { + RhelDbgPrint(TRACE_LEVEL_VERBOSE, " RegistryPath : %s \n", aRegistryPath.Buffer); + RtlFreeAnsiString(&aRegistryPath); + } #endif if (RegistryPath == NULL) { IsCrashDumpMode = TRUE; #if !defined(RUN_UNCHECKED) - memset(&aRegistryPath, 0, sizeof(aRegistryPath)); - u2a_status = RtlUnicodeStringToAnsiString(&aRegistryPath, RegistryPath, TRUE); - if (u2a_status == STATUS_SUCCESS) { - RhelDbgPrint(TRACE_LEVEL_VERBOSE, " RegistryPath : %s \n", aRegistryPath.Buffer); - RtlFreeAnsiString(&aRegistryPath); - } RhelDbgPrint(TRACE_LEVEL_INFORMATION, " Crash dump mode\n"); #endif } @@ -430,7 +430,7 @@ DriverEntry( } #endif - #if !defined(RUN_UNCHECKED) || defined(RUN_MIN_CHECKED) + #if !defined(RUN_UNCHECKED) RhelDbgPrint(TRACE_LEVEL_NONE, " VIOSCSI driver starting..."); RhelDbgPrint(TRACE_LEVEL_NONE, " Built on %s at %s \n", __DATE__, __TIME__); memset(&aRegistryPath, 0, sizeof(aRegistryPath)); diff --git a/vioscsi/vioscsi.h b/vioscsi/vioscsi.h index 313f2c5ea..c143a38cc 100755 --- a/vioscsi/vioscsi.h +++ b/vioscsi/vioscsi.h @@ -36,6 +36,7 @@ #include "scsiwmi.h" #include "osdep.h" +#include "ntddi_ver.h" #include "virtio_pci.h" #include "virtio.h" #include "virtio_ring.h" @@ -45,32 +46,6 @@ typedef struct VirtIOBufferDescriptor VIO_SG, *PVIO_SG; #define VIRTIO_SCSI_CDB_SIZE 32 #define VIRTIO_SCSI_SENSE_SIZE 96 -#ifndef NTDDI_WINTHRESHOLD -#define NTDDI_WINTHRESHOLD 0x0A000000 /* ABRACADABRA_THRESHOLD */ -#endif - -#ifndef NTDDI_WIN10_NI -#define NTDDI_WIN10_NI 0x0A00000C -#define NTDDI_WIN10_CU 0x0A00000D -#endif - -#ifndef NTDDI_WIN11 -#define NTDDI_WIN11 NTDDI_WIN10_CO -#define NTDDI_WIN11_CO NTDDI_WIN10_CO // Windows 10.0.21277-22000 / Cobalt / 21H2 -#define NTDDI_WIN11_NI NTDDI_WIN10_NI // Windows 10.0.22449-22631 / Nickel / 22H2 -#define NTDDI_WIN11_CU NTDDI_WIN10_CU // Windows 10.0.25057-25236 / Copper / 23H1 -#define NTDDI_WIN11_ZN 0x0A00000E // Windows 10.0.25246-25398 / Zinc / 23H2 -#define NTDDI_WIN11_GA 0x0A00000F // Windows 10.0.25905-25941 / Gallium / 24H1 -#define NTDDI_WIN11_GE 0x0A000010 // Windows 10.0.25947-26100 / Germanium / 24H2 -#endif - -#ifndef NTDDI_WIN11_DT -#define NTDDI_WIN11_DT 0x0A000011 // Windows 10.0.27686-27691 / Dilithium / 25H1 -#define NTDDI_WIN11_SE 0x0A000012 // Windows 10.0.27764 / Selenium / 25H2 -#endif - -#define NTDDI_THRESHOLD NTDDI_WINTHRESHOLD - #define PHYS_SEGMENTS 32 #define MAX_PHYS_SEGMENTS 512 #define VIOSCSI_POOL_TAG 'SoiV'