# usbprint.sys 26100.7920 vs 26100.8246 (CVE-2026-32223, manual pair)

# TOC

* [Visual Chart Diff](#visual-chart-diff)
* [Metadata](#metadata)
	* [Ghidra Diff Engine](#ghidra-diff-engine)
		* [Command Line](#command-line)
	* [Binary Metadata Diff](#binary-metadata-diff)
	* [Program Options](#program-options)
	* [Diff Stats](#diff-stats)
	* [Strings](#strings)
* [Deleted](#deleted)
* [Added](#added)
	* [Feature_64687419__private_IsEnabledDeviceUsageNoInline](#feature_64687419__private_isenableddeviceusagenoinline)
	* [Feature_64687419__private_IsEnabledFallback](#feature_64687419__private_isenabledfallback)
	* [Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline](#feature_print_platformstabilizationfixes_2026_wave2__private_isenableddeviceusagenoinline)
	* [Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback](#feature_print_platformstabilizationfixes_2026_wave2__private_isenabledfallback)
* [Modified](#modified)
	* [wil_details_IsEnabledFallback](#wil_details_isenabledfallback)
	* [USBPRINT_CheckConfigs](#usbprint_checkconfigs)
	* [wil_details_FeatureReporting_ReportUsageToServiceDirect](#wil_details_featurereporting_reportusagetoservicedirect)
	* [Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback](#feature_print_platformstabilizationfixes_2026_wave1__private_isenabledfallback)
	* [wil_details_FeatureReporting_ReportUsageToService](#wil_details_featurereporting_reportusagetoservice)
	* [Make1284IdStringFromUsbStrings](#make1284idstringfromusbstrings)
	* [wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath](#wil_details_featurestatecache_tryenabledeviceusagefastpath)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [WriteDbgTraceWarning](#writedbgtracewarning)

# Visual Chart Diff



```mermaid

flowchart LR

wil_details_IsEnabledFallback-2-old<--Match 94%-->wil_details_IsEnabledFallback-2-new
USBPRINT_CheckConfigs-2-old<--Match 72%-->USBPRINT_CheckConfigs-2-new
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-old<--Match 91%-->wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback-2-old<--Match 89%-->Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback-2-new
wil_details_FeatureReporting_ReportUsageToService-3-old<--Match 97%-->wil_details_FeatureReporting_ReportUsageToService-3-new
Make1284IdStringFromUsbStrings-4-old<--Match 91%-->Make1284IdStringFromUsbStrings-4-new
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-old<--Match 90%-->wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new

subgraph usbprint-10.0.26100.8246.sys
    wil_details_IsEnabledFallback-2-new
USBPRINT_CheckConfigs-2-new
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback-2-new
wil_details_FeatureReporting_ReportUsageToService-3-new
Make1284IdStringFromUsbStrings-4-new
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new
    subgraph Added
direction LR
Feature_64687419__private_IsEnabledDeviceUsageNoInline
    Feature_64687419__private_IsEnabledFallback
    Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline
    Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback
end
end

subgraph usbprint-10.0.26100.7920.sys
    wil_details_IsEnabledFallback-2-old
USBPRINT_CheckConfigs-2-old
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-old
Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback-2-old
wil_details_FeatureReporting_ReportUsageToService-3-old
Make1284IdStringFromUsbStrings-4-old
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-old
    
end

```


```mermaid
pie showData
    title Function Matches - 98.9247%
"unmatched_funcs_len" : 4
"matched_funcs_len" : 368
```



```mermaid
pie showData
    title Matched Function Similarity - 97.8261%
"matched_funcs_with_code_changes_len" : 7
"matched_funcs_with_non_code_changes_len" : 1
"matched_funcs_no_changes_len" : 360
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-32223\ghidra_projects --project-name CVE-2026-32223 --symbols-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-32223\symbols --gzfs-path gzfs --threaded --log-level INFO --file-log-level INFO --log-path ghidriff.log --min-func-len 10 --gdt [] --bsim --max-ram-percent 60.0 --max-section-funcs 200 --md-title usbprint.sys 26100.7920 vs 26100.8246 (CVE-2026-32223, manual pair) usbprint-10.0.26100.7920.sys usbprint-10.0.26100.8246.sys
```


#### Verbose Args


<details>

```
--old ['C:\\tools\\hugo\\patchpalooza\\ghidriff\\CVE-2026-32223\\usbprint-10.0.26100.7920.sys'] --new [['C:\\tools\\hugo\\patchpalooza\\ghidriff\\CVE-2026-32223\\usbprint-10.0.26100.8246.sys']] --engine VersionTrackingDiff --output-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-32223\output --summary False --project-location C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-32223\ghidra_projects --project-name CVE-2026-32223 --symbols-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-32223\symbols --gzfs-path gzfs --base-address None --program-options None --threaded True --force-analysis False --force-diff False --no-symbols False --log-level INFO --file-log-level INFO --log-path ghidriff.log --va False --min-func-len 10 --use-calling-counts False --gdt [] --bsim True --bsim-full False --max-ram-percent 60.0 --print-flags False --jvm-args None --side-by-side False --max-section-funcs 200 --md-title usbprint.sys 26100.7920 vs 26100.8246 (CVE-2026-32223, manual pair)
```


</details>

#### Download Original PEs


```
wget https://msdl.microsoft.com/download/symbols/usbprint.sys/654966431B000/usbprint.sys -O usbprint.sys.x64.10.0.26100.7920
wget https://msdl.microsoft.com/download/symbols/usbprint.sys/41DAEDF61B000/usbprint.sys -O usbprint.sys.x64.10.0.26100.8246
```


## Binary Metadata Diff


```diff
--- usbprint-10.0.26100.7920.sys Meta
+++ usbprint-10.0.26100.8246.sys Meta
@@ -1,44 +1,44 @@
-Program Name: usbprint-10.0.26100.7920.sys
+Program Name: usbprint-10.0.26100.8246.sys
 Language ID: x86:LE:64:default (4.7)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 140000000
 Maximum Address: ff0000184f
 # of Bytes: 116816
 # of Memory Blocks: 13
-# of Instructions: 8938
-# of Defined Data: 1682
-# of Functions: 184
-# of Symbols: 1881
+# of Instructions: 9017
+# of Defined Data: 1700
+# of Functions: 188
+# of Symbols: 1903
 # of Data Types: 116
 # of Data Type Categories: 7
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.1.2
-Date Created: Tue Jul 28 09:12:44 SGT 2026
+Date Created: Tue Jul 28 09:12:49 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-32223/usbprint-10.0.26100.7920.sys
-Executable MD5: ec60fa021b9d0b378ac7a7c39f11dd8c
-Executable SHA256: d0bb868c1bb49141e24471d317a990d4161ead978a8d75ab13e81148dfa3b5ae
-FSRL: file:///C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-32223/usbprint-10.0.26100.7920.sys?MD5=ec60fa021b9d0b378ac7a7c39f11dd8c
+Executable Location: /C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-32223/usbprint-10.0.26100.8246.sys
+Executable MD5: e551ede4d0493c2984322c490f01d646
+Executable SHA256: a7adc94cb16b3e8cfe1b3876170a04f2f0587a6fc86db44e58c0584d4bf621d0
+FSRL: file:///C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-32223/usbprint-10.0.26100.8246.sys?MD5=e551ede4d0493c2984322c490f01d646
 PDB Age: 1
 PDB File: usbprint.pdb
-PDB GUID: e7fe11bb-b296-7bce-6900-954d7c096d81
+PDB GUID: b9583c49-9c6d-c6f3-1ead-88b37823a540
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: USB Printer driver
-PE Property[FileVersion]: 10.0.26100.7920 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.8246 (WinBuild.160101.0800)
 PE Property[InternalName]: usbprint.sys
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: usbprint.sys
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.7920
+PE Property[ProductVersion]: 10.0.26100.8246
 PE Property[Translation]: 4b00409
 Preferred Root Namespace Category: 
 RTTI Found: false
 Relocatable: true
 SectionAlignment: 4096
 Should Ask To Analyze: false

```


## Program Options


<details>
<summary>Ghidra usbprint-10.0.26100.7920.sys Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra usbprint-10.0.26100.7920.sys Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra usbprint-10.0.26100.7920.sys Analyzers Options</summary>


|Analyzers Option|Value|
| :---: | :---: |
|ASCII Strings|true|
|ASCII Strings.Create Strings Containing Existing Strings|true|
|ASCII Strings.Create Strings Containing References|true|
|ASCII Strings.Force Model Reload|false|
|ASCII Strings.Minimum String Length|LEN_5|
|ASCII Strings.Model File|StringModel.sng|
|ASCII Strings.Require Null Termination for String|true|
|ASCII Strings.Search Only in Accessible Memory Blocks|true|
|ASCII Strings.String Start Alignment|ALIGN_1|
|ASCII Strings.String end alignment|4|
|Aggressive Instruction Finder|false|
|Aggressive Instruction Finder.Create Analysis Bookmarks|true|
|Apply Data Archives|true|
|Apply Data Archives.Archive Chooser|[Auto-Detect]|
|Apply Data Archives.Create Analysis Bookmarks|true|
|Apply Data Archives.GDT User File Archive Path|None|
|Apply Data Archives.User Project Archive Path|None|
|Call Convention ID|true|
|Call Convention ID.Analysis Decompiler Timeout (sec)|60|
|Call-Fixup Installer|true|
|Condense Filler Bytes|false|
|Condense Filler Bytes.Filler Value|Auto|
|Condense Filler Bytes.Minimum number of sequential bytes|1|
|Create Address Tables|true|
|Create Address Tables.Allow Offcut References|false|
|Create Address Tables.Auto Label Table|false|
|Create Address Tables.Create Analysis Bookmarks|true|
|Create Address Tables.Maxmimum Pointer Distance|16777215|
|Create Address Tables.Minimum Pointer Address|4132|
|Create Address Tables.Minimum Table Size|2|
|Create Address Tables.Pointer Alignment|1|
|Create Address Tables.Relocation Table Guide|true|
|Create Address Tables.Table Alignment|4|
|Data Reference|true|
|Data Reference.Address Table Alignment|1|
|Data Reference.Address Table Minimum Size|2|
|Data Reference.Align End of Strings|false|
|Data Reference.Ascii String References|true|
|Data Reference.Create Address Tables|true|
|Data Reference.Minimum String Length|5|
|Data Reference.References to Pointers|true|
|Data Reference.Relocation Table Guide|true|
|Data Reference.Respect Execute Flag|true|
|Data Reference.Subroutine References|true|
|Data Reference.Switch Table References|false|
|Data Reference.Unicode String References|true|
|Decompiler Parameter ID|true|
|Decompiler Parameter ID.Analysis Clear Level|ANALYSIS|
|Decompiler Parameter ID.Analysis Decompiler Timeout (sec)|60|
|Decompiler Parameter ID.Commit Data Types|true|
|Decompiler Parameter ID.Commit Void Return Values|false|
|Decompiler Parameter ID.Prototype Evaluation|__fastcall|
|Decompiler Switch Analysis|true|
|Decompiler Switch Analysis.Analysis Decompiler Timeout (sec)|60|
|Demangler Microsoft|true|
|Demangler Microsoft.msdApplyOptions|{
	interpretation: FUNCTION_IF_EXISTS,
	applyCallingConvention: true,
	applySignature: true,
	demangleOnlyKnownPatterns: true,
	doDisassembly: true
}|
|Demangler Microsoft.msdOutputOptions|ghidra.app.util.demangler.microsoft.options.MsdOutputOption@9e5b|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>


<details>
<summary>Ghidra usbprint-10.0.26100.8246.sys Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra usbprint-10.0.26100.8246.sys Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra usbprint-10.0.26100.8246.sys Analyzers Options</summary>


|Analyzers Option|Value|
| :---: | :---: |
|ASCII Strings|true|
|ASCII Strings.Create Strings Containing Existing Strings|true|
|ASCII Strings.Create Strings Containing References|true|
|ASCII Strings.Force Model Reload|false|
|ASCII Strings.Minimum String Length|LEN_5|
|ASCII Strings.Model File|StringModel.sng|
|ASCII Strings.Require Null Termination for String|true|
|ASCII Strings.Search Only in Accessible Memory Blocks|true|
|ASCII Strings.String Start Alignment|ALIGN_1|
|ASCII Strings.String end alignment|4|
|Aggressive Instruction Finder|false|
|Aggressive Instruction Finder.Create Analysis Bookmarks|true|
|Apply Data Archives|true|
|Apply Data Archives.Archive Chooser|[Auto-Detect]|
|Apply Data Archives.Create Analysis Bookmarks|true|
|Apply Data Archives.GDT User File Archive Path|None|
|Apply Data Archives.User Project Archive Path|None|
|Call Convention ID|true|
|Call Convention ID.Analysis Decompiler Timeout (sec)|60|
|Call-Fixup Installer|true|
|Condense Filler Bytes|false|
|Condense Filler Bytes.Filler Value|Auto|
|Condense Filler Bytes.Minimum number of sequential bytes|1|
|Create Address Tables|true|
|Create Address Tables.Allow Offcut References|false|
|Create Address Tables.Auto Label Table|false|
|Create Address Tables.Create Analysis Bookmarks|true|
|Create Address Tables.Maxmimum Pointer Distance|16777215|
|Create Address Tables.Minimum Pointer Address|4132|
|Create Address Tables.Minimum Table Size|2|
|Create Address Tables.Pointer Alignment|1|
|Create Address Tables.Relocation Table Guide|true|
|Create Address Tables.Table Alignment|4|
|Data Reference|true|
|Data Reference.Address Table Alignment|1|
|Data Reference.Address Table Minimum Size|2|
|Data Reference.Align End of Strings|false|
|Data Reference.Ascii String References|true|
|Data Reference.Create Address Tables|true|
|Data Reference.Minimum String Length|5|
|Data Reference.References to Pointers|true|
|Data Reference.Relocation Table Guide|true|
|Data Reference.Respect Execute Flag|true|
|Data Reference.Subroutine References|true|
|Data Reference.Switch Table References|false|
|Data Reference.Unicode String References|true|
|Decompiler Parameter ID|true|
|Decompiler Parameter ID.Analysis Clear Level|ANALYSIS|
|Decompiler Parameter ID.Analysis Decompiler Timeout (sec)|60|
|Decompiler Parameter ID.Commit Data Types|true|
|Decompiler Parameter ID.Commit Void Return Values|false|
|Decompiler Parameter ID.Prototype Evaluation|__fastcall|
|Decompiler Switch Analysis|true|
|Decompiler Switch Analysis.Analysis Decompiler Timeout (sec)|60|
|Demangler Microsoft|true|
|Demangler Microsoft.msdApplyOptions|{
	interpretation: FUNCTION_IF_EXISTS,
	applyCallingConvention: true,
	applySignature: true,
	demangleOnlyKnownPatterns: true,
	doDisassembly: true
}|
|Demangler Microsoft.msdOutputOptions|ghidra.app.util.demangler.microsoft.options.MsdOutputOption@9e5b|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>

## Diff Stats



|Stat|Value|
| :---: | :---: |
|added_funcs_len|4|
|deleted_funcs_len|0|
|modified_funcs_len|8|
|added_symbols_len|8|
|deleted_symbols_len|2|
|diff_time|14.54487919807434|
|deleted_strings_len|0|
|added_strings_len|1|
|match_types|Counter({'SymbolsHash': 182, 'ExternalsName': 65, 'ExactBytesFunctionHasher': 1})|
|items_to_process|22|
|diff_types|Counter({'code': 7, 'length': 7, 'sig': 6, 'address': 6, 'refcount': 2, 'called': 2, 'calling': 1})|
|unmatched_funcs_len|4|
|total_funcs_len|372|
|matched_funcs_len|368|
|matched_funcs_with_code_changes_len|7|
|matched_funcs_with_non_code_changes_len|1|
|matched_funcs_no_changes_len|360|
|match_func_similarity_percent|97.8261%|
|func_match_overall_percent|98.9247%|
|first_matches|Counter({'SymbolsHash': 182, 'ExactBytesFunctionHasher': 1})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 182
"ExternalsName" : 65
"ExactBytesFunctionHasher" : 1
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 182
"ExactBytesFunctionHasher" : 1
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 4
"deleted_funcs_len" : 0
"modified_funcs_len" : 8
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 8
"deleted_symbols_len" : 2
```

## Strings



```mermaid
pie showData
    title Strings
"deleted_strings_len" : 0
"added_strings_len" : 1
```

### Strings Diff


```diff
--- deleted strings
+++ added strings
@@ -0,0 +1 @@
+u_USBPRINT.SYS:_O

```


### String References

#### Old



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |

#### New



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |
|u_USBPRINT.SYS:_O|1|Make1284IdStringFromUsbStrings|

# Deleted

# Added

## Feature_64687419__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|name|Feature_64687419__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_64687419__private_IsEnabledDeviceUsageNoInline|
|refcount|2|
|length|49|
|called|Feature_64687419__private_IsEnabledFallback|
|calling|Make1284IdStringFromUsbStrings|
|paramcount|0|
|address|140006050|
|sig|ulonglong __fastcall Feature_64687419__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_64687419__private_IsEnabledDeviceUsageNoInline
+++ Feature_64687419__private_IsEnabledDeviceUsageNoInline
@@ -0,0 +1,17 @@
+
+ulonglong Feature_64687419__private_IsEnabledDeviceUsageNoInline(void)
+
+{
+  ulonglong uVar1;
+  undefined8 local_res8;
+  
+  local_res8 = (ulonglong)Feature_64687419__private_featureState;
+  if ((Feature_64687419__private_featureState & 0x10) == 0) {
+    uVar1 = Feature_64687419__private_IsEnabledFallback(local_res8,3);
+  }
+  else {
+    uVar1 = (ulonglong)(Feature_64687419__private_featureState & 1);
+  }
+  return uVar1;
+}
+

```


## Feature_64687419__private_IsEnabledFallback

### Function Meta



|Key|usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|name|Feature_64687419__private_IsEnabledFallback|
|fullname|Feature_64687419__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_64687419__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|
|address|140006088|
|sig|undefined __fastcall Feature_64687419__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_64687419__private_IsEnabledFallback
+++ Feature_64687419__private_IsEnabledFallback
@@ -0,0 +1,8 @@
+
+void Feature_64687419__private_IsEnabledFallback(ulonglong param_1,int param_2)
+
+{
+  wil_details_IsEnabledFallback(param_1,param_2,&Feature_64687419__private_descriptor);
+  return;
+}
+

```


## Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|name|Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline|
|refcount|2|
|length|49|
|called|Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback|
|calling|USBPRINT_CheckConfigs|
|paramcount|0|
|address|1400060f8|
|sig|ulonglong __fastcall Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline
+++ Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline
@@ -0,0 +1,20 @@
+
+ulonglong Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline
+                    (void)
+
+{
+  ulonglong uVar1;
+  undefined8 local_res8;
+  
+  local_res8 = (ulonglong)Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_featureState;
+  if ((Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_featureState & 0x10) == 0) {
+    uVar1 = Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback
+                      (local_res8,3);
+  }
+  else {
+    uVar1 = (ulonglong)
+            (Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_featureState & 1);
+  }
+  return uVar1;
+}
+

```


## Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback

### Function Meta



|Key|usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|name|Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback|
|fullname|Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|
|address|140006130|
|sig|undefined __fastcall Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback
+++ Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback
@@ -0,0 +1,9 @@
+
+void Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback
+               (ulonglong param_1,int param_2)
+
+{
+  wil_details_IsEnabledFallback(param_1,param_2,&wil_details_featureDescriptors_a);
+  return;
+}
+

```


# Modified


*Modified functions contain code changes*
## wil_details_IsEnabledFallback

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|code,refcount,length,sig,address,calling|
|ratio|0.47|
|i_ratio|0.43|
|m_ratio|0.96|
|b_ratio|0.94|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|fullname|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|`refcount`|2|4|
|`length`|135|140|
|called|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|`calling`|Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback|Feature_64687419__private_IsEnabledFallback<br>Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback<br>Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback|
|paramcount|2|3|
|`address`|140008bf4|140008d04|
|`sig`|uint __fastcall wil_details_IsEnabledFallback(char * param_1, uint param_2)|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_IsEnabledFallback Calling Diff


```diff
--- wil_details_IsEnabledFallback calling
+++ wil_details_IsEnabledFallback calling
@@ -0,0 +1 @@
+Feature_64687419__private_IsEnabledFallback
@@ -1,0 +3 @@
+Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledFallback
```


### wil_details_IsEnabledFallback Diff


```diff
--- wil_details_IsEnabledFallback
+++ wil_details_IsEnabledFallback
@@ -1,27 +1,22 @@
 
-uint wil_details_IsEnabledFallback(char *param_1,uint param_2)
+uint wil_details_IsEnabledFallback(ulonglong param_1,int param_2,undefined8 *param_3)
 
 {
   uint uVar1;
-  char *pcVar2;
-  ulonglong local_res18;
+  ulonglong local_res8;
   
   uVar1 = (uint)param_1;
-  local_res18 = (ulonglong)param_1 & 0xffffffff;
-  if (((ulonglong)param_1 & 2) == 0) {
-    pcVar2 = (char *)&Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState;
-    local_res18 = wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState
-                            ((uint *)&
-                                     Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState
-                             ,(ulonglong)param_1,0x1400122d0);
-    param_1 = pcVar2;
-    uVar1 = (uint)local_res18;
+  local_res8 = param_1 & 0xffffffff;
+  if ((param_1 & 2) == 0) {
+    local_res8 = wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState
+                           ((uint *)*param_3,param_1,(longlong)param_3);
+    uVar1 = (uint)local_res8;
   }
   if ((param_2 != 0) &&
-     (wil_details_FeatureReporting_ReportUsageToService(param_1,local_res18,param_2),
-     param_2 - 3 < 2)) {
-    wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath((uint)local_res18,param_2);
+     (wil_details_FeatureReporting_ReportUsageToService((longlong)param_3,local_res8,param_2),
+     param_2 - 3U < 2)) {
+    wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath((uint)local_res8,param_2,param_3);
   }
   return uVar1 & 1;
 }
 

```


## USBPRINT_CheckConfigs

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|code,length,called|
|ratio|0.39|
|i_ratio|0.74|
|m_ratio|0.91|
|b_ratio|0.72|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|USBPRINT_CheckConfigs|USBPRINT_CheckConfigs|
|fullname|USBPRINT_CheckConfigs|USBPRINT_CheckConfigs|
|refcount|2|2|
|`length`|168|187|
|`called`|USBD.SYS::USBD_ParseConfigurationDescriptorEx|Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline<br>USBD.SYS::USBD_ParseConfigurationDescriptorEx|
|calling|USBPRINT_ConfigureDevice|USBPRINT_ConfigureDevice|
|paramcount|2|2|
|address|1400034e0|1400034e0|
|sig|undefined __fastcall USBPRINT_CheckConfigs(longlong param_1, longlong param_2)|undefined __fastcall USBPRINT_CheckConfigs(longlong param_1, longlong param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### USBPRINT_CheckConfigs Called Diff


```diff
--- USBPRINT_CheckConfigs called
+++ USBPRINT_CheckConfigs called
@@ -0,0 +1 @@
+Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline
```


### USBPRINT_CheckConfigs Diff


```diff
--- USBPRINT_CheckConfigs
+++ USBPRINT_CheckConfigs
@@ -1,16 +1,26 @@
 
 void USBPRINT_CheckConfigs(longlong param_1,longlong param_2)
 
 {
   longlong lVar1;
-  longlong lVar2;
+  ulonglong uVar2;
+  longlong lVar3;
+  bool bVar4;
   
   lVar1 = *(longlong *)(param_1 + 0x40);
-  *(bool *)(lVar1 + 0x59c) = (*(byte *)(param_2 + 7) & 0x60) == 0x60;
-  lVar2 = USBD_ParseConfigurationDescriptorEx(param_2,param_2,0xffffffff,0xffffffff,7,0xffffffff,4);
-  *(bool *)(lVar1 + 0x429) = lVar2 != 0;
-  lVar2 = USBD_ParseConfigurationDescriptorEx(param_2,param_2,0xffffffff,0xffffffff,7,0xffffffff,2);
-  *(bool *)(lVar1 + 0x428) = lVar2 != 0;
+  uVar2 = Feature_Print_PlatformStabilizationFixes_2026_Wave2__private_IsEnabledDeviceUsageNoInline
+                    ();
+  if ((int)uVar2 == 0) {
+    bVar4 = (*(byte *)(param_2 + 7) & 0x60) == 0x60;
+  }
+  else {
+    bVar4 = (bool)(*(byte *)(param_2 + 7) >> 5 & 1);
+  }
+  *(bool *)(lVar1 + 0x59c) = bVar4;
+  lVar3 = USBD_ParseConfigurationDescriptorEx(param_2,param_2,0xffffffff,0xffffffff,7,0xffffffff,4);
+  *(bool *)(lVar1 + 0x429) = lVar3 != 0;
+  lVar3 = USBD_ParseConfigurationDescriptorEx(param_2,param_2,0xffffffff,0xffffffff,7,0xffffffff,2);
+  *(bool *)(lVar1 + 0x428) = lVar3 != 0;
   return;
 }
 

```


## wil_details_FeatureReporting_ReportUsageToServiceDirect

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|code,length,sig|
|ratio|0.35|
|i_ratio|0.55|
|m_ratio|0.96|
|b_ratio|0.91|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|wil_details_FeatureReporting_ReportUsageToServiceDirect|wil_details_FeatureReporting_ReportUsageToServiceDirect|
|fullname|wil_details_FeatureReporting_ReportUsageToServiceDirect|wil_details_FeatureReporting_ReportUsageToServiceDirect|
|refcount|2|2|
|`length`|230|221|
|called|NTOSKRNL.EXE::RtlNotifyFeatureUsage<br>__security_check_cookie<br>_guard_dispatch_icall<br>wil_details_FeatureReporting_RecordUsageInCache|NTOSKRNL.EXE::RtlNotifyFeatureUsage<br>__security_check_cookie<br>_guard_dispatch_icall<br>wil_details_FeatureReporting_RecordUsageInCache|
|calling|wil_details_FeatureReporting_ReportUsageToService|wil_details_FeatureReporting_ReportUsageToService|
|paramcount|3|3|
|address|140002ea0|140002ea0|
|`sig`|bool __fastcall wil_details_FeatureReporting_ReportUsageToServiceDirect(undefined8 param_1, undefined8 param_2, uint param_3)|bool __fastcall wil_details_FeatureReporting_ReportUsageToServiceDirect(longlong param_1, undefined8 param_2, uint param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_FeatureReporting_ReportUsageToServiceDirect Diff


```diff
--- wil_details_FeatureReporting_ReportUsageToServiceDirect
+++ wil_details_FeatureReporting_ReportUsageToServiceDirect
@@ -1,49 +1,46 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 bool wil_details_FeatureReporting_ReportUsageToServiceDirect
-               (undefined8 param_1,undefined8 param_2,uint param_3)
+               (longlong param_1,undefined8 param_2,uint param_3)
 
 {
   uint6 uVar1;
   uint *puVar2;
-  undefined1 auStack_78 [32];
-  uint *local_58;
-  undefined8 local_48;
-  uint local_40 [6];
-  uint local_28;
-  uint uStack_24;
-  uint uStack_20;
-  uint uStack_1c;
-  undefined8 local_18;
-  ulonglong local_10;
+  undefined1 auStack_88 [32];
+  uint *local_68;
+  undefined8 local_58;
+  uint local_50 [6];
+  uint local_38;
+  uint uStack_34;
+  uint uStack_30;
+  uint uStack_2c;
+  undefined8 local_28;
+  ulonglong local_20;
   
-  local_10 = __security_cookie ^ (ulonglong)auStack_78;
+  local_20 = __security_cookie ^ (ulonglong)auStack_88;
   puVar2 = wil_details_FeatureReporting_RecordUsageInCache
-                     (local_40,(uint *)&
-                                       Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_reporting
-                      ,param_3,(uint)((ulonglong)param_2 >> 0x20));
-  local_28 = *puVar2;
-  uStack_24 = puVar2[1];
-  uStack_20 = puVar2[2];
-  uStack_1c = puVar2[3];
-  local_18 = *(undefined8 *)(puVar2 + 4);
+                     (local_50,*(uint **)(param_1 + 8),param_3,(uint)((ulonglong)param_2 >> 0x20));
+  local_38 = *puVar2;
+  uStack_34 = puVar2[1];
+  uStack_30 = puVar2[2];
+  uStack_2c = puVar2[3];
+  local_28 = *(undefined8 *)(puVar2 + 4);
   if (g_wil_details_recordFeatureUsage != (code *)0x0) {
-    local_58 = &local_28;
+    local_68 = &local_38;
     (*g_wil_details_recordFeatureUsage)
-              (0x3710fa3,param_3,1,
-               &Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_reporting);
+              (*(undefined4 *)(param_1 + 0x18),param_3,1,*(undefined8 *)(param_1 + 8));
   }
   if ((((uint)param_2 >> 10 & 1) != 0) && (param_3 != 0xfe)) {
-    local_48._0_6_ = CONCAT24((short)param_3,0x3710fa3);
-    uVar1 = (uint6)local_48;
-    local_48 = (ulonglong)(uint6)local_48;
+    local_58._0_6_ = CONCAT24((short)param_3,*(undefined4 *)(param_1 + 0x18));
+    uVar1 = (uint6)local_58;
+    local_58 = (ulonglong)(uint6)local_58;
     if (((uint)param_2 >> 0xb & 1) != 0) {
-      local_48 = CONCAT26(1,uVar1);
+      local_58 = CONCAT26(1,uVar1);
     }
-    RtlNotifyFeatureUsage(&local_48);
+    RtlNotifyFeatureUsage(&local_58);
   }
-  return (int)local_18 == 0;
+  return (int)local_28 == 0;
 }
 

```


## Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.67|
|i_ratio|0.67|
|m_ratio|0.89|
|b_ratio|0.89|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback|Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback|
|fullname|Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback|Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback|
|refcount|2|2|
|`length`|14|21|
|called|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|calling|Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledDeviceUsageNoInline|Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|2|
|`address`|140006068|1400060dc|
|`sig`|undefined __fastcall Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback(char * param_1, uint param_2)|undefined __fastcall Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback Diff


```diff
--- Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback
+++ Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback
@@ -1,9 +1,11 @@
 
 void Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_IsEnabledFallback
-               (char *param_1,uint param_2)
+               (ulonglong param_1,int param_2)
 
 {
-  wil_details_IsEnabledFallback(param_1,param_2);
+  wil_details_IsEnabledFallback
+            (param_1,param_2,
+             &Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_descriptor);
   return;
 }
 

```


## wil_details_FeatureReporting_ReportUsageToService

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.5|
|i_ratio|0.7|
|m_ratio|0.97|
|b_ratio|0.97|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|wil_details_FeatureReporting_ReportUsageToService|wil_details_FeatureReporting_ReportUsageToService|
|fullname|wil_details_FeatureReporting_ReportUsageToService|wil_details_FeatureReporting_ReportUsageToService|
|refcount|2|2|
|`length`|263|274|
|called|_guard_dispatch_icall<br>wil_details_FeatureReporting_ReportUsageToServiceDirect|_guard_dispatch_icall<br>wil_details_FeatureReporting_ReportUsageToServiceDirect|
|calling|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|paramcount|3|3|
|`address`|140004a80|140004aa0|
|`sig`|undefined __fastcall wil_details_FeatureReporting_ReportUsageToService(char * param_1, ulonglong param_2, uint param_3)|undefined __fastcall wil_details_FeatureReporting_ReportUsageToService(longlong param_1, ulonglong param_2, undefined4 param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_FeatureReporting_ReportUsageToService Diff


```diff
--- wil_details_FeatureReporting_ReportUsageToService
+++ wil_details_FeatureReporting_ReportUsageToService
@@ -1,65 +1,59 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 
-void wil_details_FeatureReporting_ReportUsageToService(char *param_1,ulonglong param_2,uint param_3)
+void wil_details_FeatureReporting_ReportUsageToService
+               (longlong param_1,ulonglong param_2,undefined4 param_3)
 
 {
   bool bVar1;
   undefined7 extraout_var;
   uint uVar2;
   int iVar3;
   uint uVar4;
   byte bVar5;
-  uint local_res18 [4];
+  undefined4 local_res18 [4];
   
   uVar2 = (uint)param_2 & 1;
-  if (param_3 < 7) {
-    param_1 = IMAGE_DOS_HEADER_140000000.e_magic +
-              (&switchD_140004aaa::switchdataD_140011314)[(int)param_3];
-    switch(param_3) {
-    case 0:
-      goto switchD_140004aaa_caseD_0;
-    case 1:
-      uVar4 = (uVar2 ^ 1) << 2;
-      break;
-    case 2:
-      uVar4 = (uVar2 ^ 1) * 4 + 1;
-      break;
-    case 3:
-      uVar4 = (uVar2 ^ 1) * 4 + 2;
-      break;
-    case 4:
-      uVar4 = (uVar2 ^ 1) * 4 + 3;
-      break;
-    case 5:
-      uVar4 = (uVar2 ^ 1) * 2 + 8;
-      break;
-    case 6:
-      uVar4 = (uVar2 ^ 1) * 2 + 9;
-    }
-  }
-  else {
+  switch(param_3) {
+  case 1:
+    uVar4 = (uVar2 ^ 1) << 2;
+    break;
+  case 2:
+    uVar4 = (uVar2 ^ 1) * 4 + 1;
+    break;
+  case 3:
+    uVar4 = (uVar2 ^ 1) * 4 + 2;
+    break;
+  case 4:
+    uVar4 = (uVar2 ^ 1) * 4 + 3;
+    break;
+  case 5:
+    uVar4 = (uVar2 ^ 1) * 2 + 8;
+    break;
+  case 6:
+    uVar4 = (uVar2 ^ 1) * 2 + 9;
+    break;
+  default:
     bVar5 = (byte)param_3;
     if ((99 < bVar5) && (bVar5 < 0x96)) {
       iVar3 = 100;
       if ((param_2 & 1) == 0) {
         iVar3 = 0x96;
       }
       uVar4 = iVar3 + (uint)(byte)(bVar5 + 0x9c);
-      goto LAB_0;
+      break;
     }
-switchD_140004aaa_caseD_0:
+  case 0:
     uVar4 = 0xff;
   }
-LAB_0:
   local_res18[0] = param_3;
   bVar1 = wil_details_FeatureReporting_ReportUsageToServiceDirect(param_1,param_2,uVar4);
   if (((int)CONCAT71(extraout_var,bVar1) != 0) &&
      (g_wil_details_pfnFeatureLoggingHook != (code *)0x0)) {
     (*g_wil_details_pfnFeatureLoggingHook)
-              (0x3710fa3,&Feature_Print_PlatformStabilizationFixes_2026_Wave1_logged_traits,0,uVar2,
-               local_res18,0,0,1);
+              (*(undefined4 *)(param_1 + 0x18),*(undefined8 *)(param_1 + 0x10),0,uVar2,local_res18,0
+               ,0,1);
   }
   return;
 }
 

```


## Make1284IdStringFromUsbStrings

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address,called|
|ratio|0.12|
|i_ratio|0.46|
|m_ratio|0.94|
|b_ratio|0.91|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|Make1284IdStringFromUsbStrings|Make1284IdStringFromUsbStrings|
|fullname|Make1284IdStringFromUsbStrings|Make1284IdStringFromUsbStrings|
|refcount|2|2|
|`length`|593|655|
|`called`|NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePool<br>RtlStringCbPrintfA<br>USBPRINT_GetUsbStringDescriptor<br>WriteDbgTraceInfo<br>WriteDbgTraceWarning<br>memcpy|Feature_64687419__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePool<br>RtlStringCbPrintfA<br>USBPRINT_GetUsbStringDescriptor<br>WriteDbgTraceInfo<br>WriteDbgTraceWarning<br>memmove|
|calling|USBPRINT_ProcessIOCTL|USBPRINT_ProcessIOCTL|
|paramcount|4|4|
|`address`|1400069bc|140006a7c|
|`sig`|ulonglong __fastcall Make1284IdStringFromUsbStrings(longlong param_1, undefined1 * param_2, int * param_3, undefined8 param_4)|int __fastcall Make1284IdStringFromUsbStrings(longlong param_1, undefined1 * param_2, uint * param_3, undefined8 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### Make1284IdStringFromUsbStrings Called Diff


```diff
--- Make1284IdStringFromUsbStrings called
+++ Make1284IdStringFromUsbStrings called
@@ -0,0 +1 @@
+Feature_64687419__private_IsEnabledDeviceUsageNoInline
@@ -7 +8 @@
-memcpy
+memmove
```


### Make1284IdStringFromUsbStrings Diff


```diff
--- Make1284IdStringFromUsbStrings
+++ Make1284IdStringFromUsbStrings
@@ -1,99 +1,113 @@
 
-ulonglong Make1284IdStringFromUsbStrings
-                    (longlong param_1,undefined1 *param_2,int *param_3,undefined8 param_4)
+int Make1284IdStringFromUsbStrings
+              (longlong param_1,undefined1 *param_2,uint *param_3,undefined8 param_4)
 
 {
-  byte *pbVar1;
+  int iVar1;
   byte *pbVar2;
-  ulonglong uVar3;
+  byte *pbVar3;
   ulonglong uVar4;
-  longlong lVar5;
+  ulonglong uVar5;
+  longlong lVar6;
   char *_Src;
-  longlong lVar6;
-  wchar_t *pwVar8;
-  uint uVar9;
-  undefined8 uVar10;
-  byte *pbVar11;
-  undefined8 uVar12;
+  longlong lVar8;
+  wchar_t *pwVar9;
+  uint uVar10;
+  undefined8 uVar11;
+  byte *pbVar12;
+  undefined8 uVar13;
   longlong lVar7;
   
-  lVar5 = *(longlong *)(param_1 + 0x40);
-  uVar10 = 0x50425355;
-  pbVar1 = (byte *)ExAllocatePool2(0x40,0x105);
-  if (pbVar1 == (byte *)0x0) {
-    pwVar8 = L"USBPRINT.SYS: Memory Allocation failed in Make1284IdStringFromUsbStrings";
+  lVar8 = *(longlong *)(param_1 + 0x40);
+  uVar11 = 0x50425355;
+  iVar1 = 0;
+  pbVar2 = (byte *)ExAllocatePool2(0x40,0x105);
+  if (pbVar2 == (byte *)0x0) {
+    pwVar9 = L"USBPRINT.SYS: Memory Allocation failed in Make1284IdStringFromUsbStrings";
+LAB_0:
+    WriteDbgTraceWarning("Make1284IdStringFromUsbStrings",pwVar9,uVar11,param_4);
+    return -0x3fffffe9;
+  }
+  uVar11 = 0x50425355;
+  pbVar3 = (byte *)ExAllocatePool2(0x40,0x105);
+  if (pbVar3 == (byte *)0x0) {
+    ExFreePool(pbVar2);
+    pwVar9 = L"USBPRINT.SYS: Memory Allocation failed in Make1284IdStringFromUsbStrings.";
+    goto LAB_0;
+  }
+  uVar4 = USBPRINT_GetUsbStringDescriptor
+                    (param_1,*(undefined1 *)(*(longlong *)(lVar8 + 0x4b8) + 0xe),pbVar2,0x105);
+  uVar11 = 0x105;
+  pbVar12 = pbVar3;
+  uVar5 = USBPRINT_GetUsbStringDescriptor
+                    (param_1,*(undefined1 *)(*(longlong *)(lVar8 + 0x4b8) + 0xf),pbVar3,0x105);
+  if (((int)uVar4 == -1) || ((int)uVar5 == -1)) {
+    WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
+                      L"Make1284IdStringFromUsbStrings: Failed to get USB string descriptors",
+                      pbVar12,uVar11);
+    iVar1 = -0x3ffffddb;
+    goto LAB_1;
+  }
+  lVar8 = -1;
+  do {
+    lVar8 = lVar8 + 1;
+    lVar6 = -1;
+  } while (*(short *)(pbVar2 + lVar8 * 2 + 2) != 0);
+  do {
+    lVar7 = lVar6;
+    lVar6 = lVar7 + 1;
+  } while (*(short *)(pbVar3 + lVar6 * 2 + 2) != 0);
+  uVar10 = (int)lVar7 + 0xc + (int)lVar8;
+  if (0x209 < uVar10) {
+    WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
+                      L"Make1284IdStringFromUsbStrings: Encountered corrupt USB string descriptor",
+                      pbVar12,uVar11);
+    iVar1 = -0x3fffff64;
+  }
+  uVar4 = Feature_64687419__private_IsEnabledDeviceUsageNoInline();
+  if ((int)uVar4 == 0) {
+    if (iVar1 < 0) goto LAB_1;
   }
   else {
-    uVar10 = 0x50425355;
-    pbVar2 = (byte *)ExAllocatePool2(0x40,0x105);
-    if (pbVar2 != (byte *)0x0) {
-      uVar3 = USBPRINT_GetUsbStringDescriptor
-                        (param_1,*(undefined1 *)(*(longlong *)(lVar5 + 0x4b8) + 0xe),pbVar1,0x105);
-      uVar10 = 0x105;
-      pbVar11 = pbVar2;
-      uVar4 = USBPRINT_GetUsbStringDescriptor
-                        (param_1,*(undefined1 *)(*(longlong *)(lVar5 + 0x4b8) + 0xf),pbVar2,0x105);
-      if (((int)uVar3 == -1) || ((int)uVar4 == -1)) {
-        WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
-                          L"Make1284IdStringFromUsbStrings: Failed to get USB string descriptors",
-                          pbVar11,uVar10);
-        uVar3 = 0xc0000225;
-      }
-      else {
-        lVar5 = -1;
-        do {
-          lVar5 = lVar5 + 1;
-          lVar6 = -1;
-        } while (*(short *)(pbVar1 + lVar5 * 2 + 2) != 0);
-        do {
-          lVar7 = lVar6;
-          lVar6 = lVar7 + 1;
-        } while (*(short *)(pbVar2 + lVar6 * 2 + 2) != 0);
-        uVar9 = (int)lVar7 + 0xc + (int)lVar5;
-        if (uVar9 < 0x20a) {
-          uVar12 = 0x50425355;
-          _Src = (char *)ExAllocatePool2(0x40,uVar9);
-          if (_Src == (char *)0x0) {
-            WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
-                              L"Make1284IdStringFromUsbStrings: ExAllocatePool2 failed",uVar12,
-                              uVar10);
-            uVar3 = 0xc0000017;
-          }
-          else {
-            pbVar11 = pbVar1 + 2;
-            uVar4 = RtlStringCbPrintfA(_Src,(ulonglong)uVar9,"MFG:%ws;MDL:%ws;",pbVar11);
-            uVar3 = uVar4 & 0xffffffff;
-            if ((int)uVar4 < 0) {
-              WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
-                                L"Make1284IdStringFromUsbStrings: RtlStringCbPrintfW failed 0x%x",
-                                uVar4 & 0xffffffff,pbVar11);
-            }
-            else {
-              WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
-                                L"Make1284IdStringFromUsbStrings: %hs",_Src,pbVar11);
-              param_2[1] = (char)uVar9;
-              *param_2 = (char)(uVar9 >> 8);
-              memcpy(param_2 + 2,_Src,(ulonglong)uVar9);
-              *param_3 = uVar9 + 2;
-            }
-            ExFreePool(_Src);
-          }
-        }
-        else {
-          WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
-                            L"Make1284IdStringFromUsbStrings: Encountered corrupt USB string descriptor"
-                            ,pbVar11,uVar10);
-          uVar3 = 0xc000009c;
-        }
-      }
-      ExFreePool(pbVar1);
-      ExFreePool(pbVar2);
-      return uVar3;
+    if (iVar1 < 0) goto LAB_1;
+    if (*param_3 < uVar10 + 2) {
+      WriteDbgTraceWarning
+                ("Make1284IdStringFromUsbStrings",
+                 L"USBPRINT.SYS: Output buffer is too small in Make1284IdStringFromUsbStrings",
+                 pbVar12,uVar11);
+      iVar1 = -0x3fffffdd;
+      goto LAB_1;
     }
-    ExFreePool(pbVar1);
-    pwVar8 = L"USBPRINT.SYS: Memory Allocation failed in Make1284IdStringFromUsbStrings.";
   }
-  WriteDbgTraceWarning("Make1284IdStringFromUsbStrings",pwVar8,uVar10,param_4);
-  return 0xc0000017;
+  uVar13 = 0x50425355;
+  _Src = (char *)ExAllocatePool2(0x40,uVar10);
+  if (_Src == (char *)0x0) {
+    WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
+                      L"Make1284IdStringFromUsbStrings: ExAllocatePool2 failed",uVar13,uVar11);
+    iVar1 = -0x3fffffe9;
+  }
+  else {
+    pbVar12 = pbVar2 + 2;
+    uVar4 = RtlStringCbPrintfA(_Src,(ulonglong)uVar10,"MFG:%ws;MDL:%ws;",pbVar12);
+    iVar1 = (int)uVar4;
+    if (iVar1 < 0) {
+      WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",
+                        L"Make1284IdStringFromUsbStrings: RtlStringCbPrintfW failed 0x%x",
+                        uVar4 & 0xffffffff,pbVar12);
+    }
+    else {
+      WriteDbgTraceInfo("Make1284IdStringFromUsbStrings",L"Make1284IdStringFromUsbStrings: %hs",_Src
+                        ,pbVar12);
+      *param_2 = (char)(uVar10 >> 8);
+      param_2[1] = (char)uVar10;
+      memmove(param_2 + 2,_Src,(ulonglong)uVar10);
+      *param_3 = uVar10 + 2;
+    }
+    ExFreePool(_Src);
+  }
+LAB_1:
+  ExFreePool(pbVar2);
+  ExFreePool(pbVar3);
+  return iVar1;
 }
 

```


## wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.39|
|i_ratio|0.37|
|m_ratio|0.9|
|b_ratio|0.9|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|fullname|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|refcount|2|2|
|`length`|76|91|
|called|||
|calling|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|paramcount|2|3|
|`address`|140008a40|140008b40|
|`sig`|undefined __fastcall wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1, int param_2)|undefined __fastcall wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath Diff


```diff
--- wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
+++ wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
@@ -1,42 +1,52 @@
 
-void wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1,int param_2)
+void wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
+               (uint param_1,int param_2,undefined8 *param_3)
 
 {
-  uint uVar1;
+  uint *puVar1;
   uint uVar2;
   uint uVar3;
-  bool bVar4;
+  uint uVar4;
+  bool bVar5;
   
+  puVar1 = (uint *)*param_3;
   if (param_2 == 3) {
-    uVar3 = 0x10;
+    uVar4 = 0x10;
   }
   else {
     if (param_2 != 4) {
       return;
     }
-    uVar3 = 0x20;
+    uVar4 = 0x20;
   }
-  if (((uint)Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState & 2) != 0) {
-    uVar2 = (uint)Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState;
-    while ((uVar2 & 1) == (param_1 & 1)) {
-      LOCK();
-      bVar4 = uVar2 == (uint)
-                       Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState;
-      uVar1 = uVar3 | uVar2;
-      if (!bVar4) {
-        uVar2 = (uint)Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState;
-        uVar1 = (uint)Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState;
-      }
-      Feature_Print_PlatformStabilizationFixes_2026_Wave1__private_featureState._0_4_ = uVar1;
-      UNLOCK();
-      if (bVar4) {
-        return;
-      }
-      if ((uVar2 & 2) == 0) {
-        return;
+  if ((*(char *)((longlong)param_3 + 0x1e) == '\0') && (*(char *)((longlong)param_3 + 0x1d) == '\0')
+     ) {
+    if ((*puVar1 & 2) != 0) {
+      uVar3 = *puVar1;
+      while ((uVar3 & 1) == (param_1 & 1)) {
+        LOCK();
+        uVar2 = *puVar1;
+        bVar5 = uVar3 == uVar2;
+        if (bVar5) {
+          *puVar1 = uVar4 | uVar3;
+          uVar2 = uVar3;
+        }
+        UNLOCK();
+        if (bVar5) {
+          return;
+        }
+        uVar3 = uVar2;
+        if ((uVar2 & 2) == 0) {
+          return;
+        }
       }
     }
+  }
+  else {
+    LOCK();
+    *puVar1 = *puVar1 | uVar4;
+    UNLOCK();
   }
   return;
 }
 

```


# Modified (No Code Changes)


*Slightly modified functions have no code changes, rather differnces in:*
- refcount
- length
- called
- calling
- name
- fullname

## WriteDbgTraceWarning

### Match Info



|Key|usbprint-10.0.26100.7920.sys - usbprint-10.0.26100.8246.sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.87|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|usbprint-10.0.26100.7920.sys|usbprint-10.0.26100.8246.sys|
| :---: | :---: | :---: |
|name|WriteDbgTraceWarning|WriteDbgTraceWarning|
|fullname|WriteDbgTraceWarning|WriteDbgTraceWarning|
|`refcount`|68|69|
|length|88|88|
|called|DbgTraceWorker<br>IsEnabled<br>NTOSKRNL.EXE::KeGetCurrentIrql|DbgTraceWorker<br>IsEnabled<br>NTOSKRNL.EXE::KeGetCurrentIrql|
|calling|<details><summary>Expand for full list:<br>GetPrinterNameFrom1284Id<br>GetPrinterNameFromUsbStrings<br>Make1284IdStringFromUsbStrings<br>ParPnpGetId<br>ProduceQueriedID<br>SetPortNameAndPrinterName<br>USBPRINT_AsyncReadWrite_Complete<br>USBPRINT_BuildPipeList<br>USBPRINT_ConfigureDevice<br>USBPRINT_Dispatch<br>USBPRINT_FdoIdleNotificationCallback</summary>USBPRINT_FdoRequestWake<br>USBPRINT_Get1284Id<br>USBPRINT_GetPortStatus<br>USBPRINT_GetUSBConfigs<br>USBPRINT_GetUsbStringDescriptor<br>USBPRINT_InitDeviceObject<br>USBPRINT_ProcessIOCTL<br>USBPRINT_ProcessPowerIrp<br>USBPRINT_QueryCapabilities<br>USBPRINT_Read<br>USBPRINT_SelectInterface<br>USBPRINT_StartDevice<br>USBPRINT_Write</details>|<details><summary>Expand for full list:<br>GetPrinterNameFrom1284Id<br>GetPrinterNameFromUsbStrings<br>Make1284IdStringFromUsbStrings<br>ParPnpGetId<br>ProduceQueriedID<br>SetPortNameAndPrinterName<br>USBPRINT_AsyncReadWrite_Complete<br>USBPRINT_BuildPipeList<br>USBPRINT_ConfigureDevice<br>USBPRINT_Dispatch<br>USBPRINT_FdoIdleNotificationCallback</summary>USBPRINT_FdoRequestWake<br>USBPRINT_Get1284Id<br>USBPRINT_GetPortStatus<br>USBPRINT_GetUSBConfigs<br>USBPRINT_GetUsbStringDescriptor<br>USBPRINT_InitDeviceObject<br>USBPRINT_ProcessIOCTL<br>USBPRINT_ProcessPowerIrp<br>USBPRINT_QueryCapabilities<br>USBPRINT_Read<br>USBPRINT_SelectInterface<br>USBPRINT_StartDevice<br>USBPRINT_Write</details>|
|paramcount|4|4|
|`address`|140005b50|140005b70|
|sig|undefined __fastcall WriteDbgTraceWarning(char * param_1, wchar_t * param_2, undefined8 param_3, undefined8 param_4)|undefined __fastcall WriteDbgTraceWarning(char * param_1, wchar_t * param_2, undefined8 param_3, undefined8 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|



<sub>Generated with `ghidriff` version: 1.0.0 on 2026-07-28T09:13:28</sub>