# storport-2025-05.sys-storport-2025-06.sys Diff

# 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)
	* [FUN_1c00a99b0](#fun_1c00a99b0)
* [Added](#added)
	* [Feature_1890851130__private_IsEnabledFallback](#feature_1890851130__private_isenabledfallback)
	* [RaidCallerIsAdmin](#raidcallerisadmin)
	* [RaUnitStorageDiagnosticIoctl](#raunitstoragediagnosticioctl)
	* [NTOSKRNL.EXE::SeTokenIsAdmin](#ntoskrnlexesetokenisadmin)
* [Modified](#modified)
	* [FUN_1c0022c88](#fun_1c0022c88)
	* [FUN_1c0022d04](#fun_1c0022d04)
	* [FUN_1c0023090](#fun_1c0023090)
	* [FUN_1c00228e0](#fun_1c00228e0)
	* [FUN_1c0022ef0](#fun_1c0022ef0)
	* [FUN_1c00a5c58](#fun_1c00a5c58)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [NTOSKRNL.EXE::SeUnlockSubjectContext](#ntoskrnlexeseunlocksubjectcontext)
	* [NTOSKRNL.EXE::SeCaptureSubjectContext](#ntoskrnlexesecapturesubjectcontext)
	* [NTOSKRNL.EXE::SeReleaseSubjectContext](#ntoskrnlexesereleasesubjectcontext)
	* [NTOSKRNL.EXE::SeLockSubjectContext](#ntoskrnlexeselocksubjectcontext)

# Visual Chart Diff



```mermaid

flowchart LR

FUN_1c0022c88-3-old<--Match 94%-->wil_details_FeatureReporting_ReportUsageToService-3-new
FUN_1c0022d04-3-old<--Match 95%-->wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
FUN_1c0023090-2-old<--Match 94%-->wil_details_IsEnabledFallback-2-new
FUN_1c00228e0-2-old<--Match 89%-->Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback-2-new
FUN_1c0022ef0-2-old<--Match 83%-->wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new
FUN_1c00a5c58-2-old<--Match 97%-->RaidAdapterDiagnosticIoctl-2-new

subgraph storport-2025-06.sys
    wil_details_FeatureReporting_ReportUsageToService-3-new
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
wil_details_IsEnabledFallback-2-new
Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback-2-new
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new
RaidAdapterDiagnosticIoctl-2-new
    subgraph Added
direction LR
Feature_1890851130__private_IsEnabledFallback
    RaidCallerIsAdmin
    RaUnitStorageDiagnosticIoctl
    NTOSKRNLEXE-SeTokenIsAdmin
end
end

subgraph storport-2025-05.sys
    FUN_1c0022c88-3-old
FUN_1c0022d04-3-old
FUN_1c0023090-2-old
FUN_1c00228e0-2-old
FUN_1c0022ef0-2-old
FUN_1c00a5c58-2-old
    subgraph Deleted
direction LR
FUN_1c00a99b0
end
end

```


```mermaid
pie showData
    title Function Matches - 99.8790%
"unmatched_funcs_len" : 5
"matched_funcs_len" : 4127
```



```mermaid
pie showData
    title Matched Function Similarity - 99.4912%
"matched_funcs_with_code_changes_len" : 6
"matched_funcs_with_non_code_changes_len" : 15
"matched_funcs_no_changes_len" : 4106
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location ghidra_projects --project-name ghidriff --symbols-path symbols --gzfs-path gzfs --threaded --log-level INFO --file-log-level INFO --log-path ghidriff.log --min-func-len 10 --gdt [] --max-ram-percent 60.0 --max-section-funcs 200 storport-2025-05.sys storport-2025-06.sys
```


#### Verbose Args


<details>

```
--old ['storport-2025-05.sys'] --new [['storport-2025-06.sys']] --engine VersionTrackingDiff --output-path ghidriffs --summary False --project-location ghidra_projects --project-name ghidriff --symbols-path 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 False --bsim-full False --max-ram-percent 60.0 --print-flags False --jvm-args None --side-by-side False --max-section-funcs 200 --md-title None
```


</details>

#### Download Original PEs


```
wget https://msdl.microsoft.com/download/symbols/storport.sys/1669511011C000/storport.sys -O storport.sys.x64.10.0.22621.5415
wget https://msdl.microsoft.com/download/symbols/storport.sys/D1F8EC0611C000/storport.sys -O storport.sys.x64.10.0.22621.5547
```


## Binary Metadata Diff


```diff
--- storport-2025-05.sys Meta
+++ storport-2025-06.sys Meta
@@ -1,43 +1,44 @@
-Program Name: storport-2025-05.sys
+Program Name: storport-2025-06.sys
 Language ID: x86:LE:64:default (4.7)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 1c0000000
 Maximum Address: ff0000184f
-# of Bytes: 1165751
+# of Bytes: 1165767
 # of Memory Blocks: 16
-# of Instructions: 143071
-# of Defined Data: 16557
-# of Functions: 2064
-# of Symbols: 22473
-# of Data Types: 166
-# of Data Type Categories: 11
+# of Instructions: 143159
+# of Defined Data: 16587
+# of Functions: 2068
+# of Symbols: 24060
+# of Data Types: 2781
+# of Data Type Categories: 208
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.1.2
-Date Created: Tue Sep 08 23:16:42 SGT 2026
+Date Created: Tue Sep 08 23:16:48 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /C:/Users/Jacob/Downloads/pdbs/storport-2025-05.sys
-Executable MD5: 5b92e1ba1e6a1ea9235b98a7f0e3da7f
-Executable SHA256: b4911f58cfd621f5937fcc43cd42f7808c6bc46864d4eb437fe22d3f95d9f693
-FSRL: file:///C:/Users/Jacob/Downloads/pdbs/storport-2025-05.sys?MD5=5b92e1ba1e6a1ea9235b98a7f0e3da7f
+Executable Location: /C:/Users/Jacob/Downloads/pdbs/storport-2025-06.sys
+Executable MD5: bfbc69761b58234021169cc8c13e2134
+Executable SHA256: 75e893b3a1ef309ffde2b2866412b7d760ff66dcfa11bec602d3bce4d6d517a5
+FSRL: file:///C:/Users/Jacob/Downloads/pdbs/storport-2025-06.sys?MD5=bfbc69761b58234021169cc8c13e2134
 PDB Age: 1
 PDB File: storport.pdb
-PDB GUID: d8ba3e18-2149-899c-1475-fe219c1c54e6
+PDB GUID: 8ffe0c97-c8f7-9af3-e140-36f229ed964f
+PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: Microsoft Storage Port Driver
-PE Property[FileVersion]: 10.0.22621.5415 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.22621.5547 (WinBuild.160101.0800)
 PE Property[InternalName]: storport.sys
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: storport.sys
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.22621.5415
+PE Property[ProductVersion]: 10.0.22621.5547
 PE Property[Translation]: 4b00000
 Preferred Root Namespace Category: 
 RTTI Found: false
 Relocatable: true
 SectionAlignment: 4096
 Should Ask To Analyze: false

```


## Program Options


<details>
<summary>Ghidra storport-2025-05.sys Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra storport-2025-05.sys Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra storport-2025-05.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 storport-2025-06.sys Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra storport-2025-06.sys Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra storport-2025-06.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|1|
|modified_funcs_len|21|
|added_symbols_len|770|
|deleted_symbols_len|0|
|diff_time|22.566635847091675|
|deleted_strings_len|122|
|added_strings_len|125|
|match_types|Counter({'ExactInstructionsFunctionHasher': 1344, 'SymbolsHash': 377, 'ExternalsName': 302, 'ExactBytesFunctionHasher': 239, 'BulkBasicBlockMnemonicHash': 110, 'SigCallingCalledHasher': 11, 'BulkInstructionHash': 5, 'StructuralGraphHash': 4, 'StructuralGraphExactHash': 3, 'StringsRefsHasher': 3, 'Implied Match': 3})|
|items_to_process|796|
|diff_types|Counter({'address': 19, 'calling': 19, 'name': 17, 'fullname': 17, 'sig': 17, 'refcount': 16, 'called': 14, 'code': 6, 'length': 6})|
|unmatched_funcs_len|5|
|total_funcs_len|4132|
|matched_funcs_len|4127|
|matched_funcs_with_code_changes_len|6|
|matched_funcs_with_non_code_changes_len|15|
|matched_funcs_no_changes_len|4106|
|match_func_similarity_percent|99.4912%|
|func_match_overall_percent|99.8790%|
|first_matches|Counter({'ExactInstructionsFunctionHasher': 1344, 'SymbolsHash': 377, 'ExactBytesFunctionHasher': 239, 'BulkBasicBlockMnemonicHash': 110, 'SigCallingCalledHasher': 11, 'BulkInstructionHash': 5, 'StructuralGraphHash': 4, 'StructuralGraphExactHash': 3, 'StringsRefsHasher': 3, 'Implied Match': 3})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 377
"ExternalsName" : 302
"ExactBytesFunctionHasher" : 239
"ExactInstructionsFunctionHasher" : 1344
"StructuralGraphExactHash" : 3
"BulkInstructionHash" : 5
"SigCallingCalledHasher" : 11
"StringsRefsHasher" : 3
"StructuralGraphHash" : 4
"BulkBasicBlockMnemonicHash" : 110
"Implied-Match" : 3
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 377
"ExactBytesFunctionHasher" : 239
"ExactInstructionsFunctionHasher" : 1344
"StructuralGraphExactHash" : 3
"BulkInstructionHash" : 5
"SigCallingCalledHasher" : 11
"StringsRefsHasher" : 3
"StructuralGraphHash" : 4
"BulkBasicBlockMnemonicHash" : 110
"Implied-Match" : 3
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 4
"deleted_funcs_len" : 1
"modified_funcs_len" : 21
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 770
"deleted_symbols_len" : 0
```

## Strings



```mermaid
pie showData
    title Strings
"deleted_strings_len" : 122
"added_strings_len" : 125
```

### Strings Diff


```diff
--- deleted strings
+++ added strings
@@ -1,122 +1,125 @@
+Disk1667CompatibleIdString
+WellKnownPassword
+hexDigits
+s
+s_%I64u_-_STORMINI:
+s_%lld
 s_%s_:
-s_0123456789ABCDEF
-s_AutoATAWindowsString12345678901
-s_Disk1667
+s_,
+s_Disk
+s_End
+s_ErrInvalidAssignNamespaceResult
+s_ErrInvalidSyncData
+s_Io
 s_MSFT
+s_NULL
+s_Net
+s_RBC
 s_StorMiniport:
+s_TcgQueryCapabilityConfiguration
+s_Worm
+s_new
+s_retried
 u
-u_%8.8hs%16.16hs%1.1hs
-u_%hs_%hs_SCSI_%hs_Device
-u_%s\Scsi_Port_%d\SCSI_Bus_%d\Targ
-u_128us,_256us,_512us,_1ms,_4ms,
-u_4K,_8K,_16K,_32K,_64K,_128K,
-u_64ms,_256ms,_1024ms,_5120ms,
-u_ASCPrePressGraphicsPeripheral
-u_Access_denied,_operation_not_sup
-u_BridgePeripheral
-u_BusSpecificResetTimeout
-u_Bus_Number_%d,_Target_Id_%d,_LUN
-u_BusyPauseTimeInMs
-u_Bypass_IO_not_supported
-u_CardReaderPeripheral
-u_CommunicationsPeripheral
-u_CreateControlObject
-u_DeviceDumpMaxSize
-u_DeviceDumpVendorGPLogAddress
-u_DeviceIdentifierPage
-u_DeviceQueueIoWaitThreshold
-u_DeviceTelemetryLiveDumpEnable
-u_DisableExtensionDriver
-u_DisableIdlePowerManagement
-u_DisableNVMeActiveNamespaceIDList
-u_DisableRuntimePower
-u_DisableRuntimePowerManagement
-u_Dma64BitAddresses
-u_DpcCompletionLimit
-u_EnableIdlePowerManagement
-u_EnableRegistryWatch
-u_EnclosurePeripheral
-u_EtwRegisterClassicProvider
-u_ExtendedDSMCommandsSupported
-u_Failure_found_while_processing_o
-u_HiberFileHybridPriority
-u_HighLatencyIoThreshold
-u_HmbAllocationPolicy
-u_HmbMaximumSizeInBytes
-u_InitialLunQueueDepth
-u_InitialTimestamp
-u_Initializing_IO_size_distributio
-u_Initializing_performance_telemet
-u_Interrupt_Management\MessageSign
-u_Invalid_operation
-u_LogControlEnable
-u_Logical_Unit_Id_%d
-u_MaxPreAllocatedIoResourceCount
-u_MaximumLogicalUnit
-u_MaximumUCXAddress
-u_MediumChangerPeripheral
-u_MinimumIdleTimeoutInMS
-u_MinimumUCXAddress
-u_MiniportBugActionPolicy
-u_NVME\%hs&Prod_%hs
-u_NVME\%hs_%8.8hs%40.40hs
-u_NVME\%hs_%8.8hs%40.40hs%8.8hs
-u_NVMe_%hs_%hs_Device
-u_NumberOfRequests
-u_OpticalDiskPeripheral
-u_OverrideDeviceUniqueIDCapability
-u_PowerCycleCountOverride
-u_PrinterPeripheral
-u_PrivateLogAddress
-u_PublicLogAddressList
-u_QueueFullWaitIoPercentage
-u_RaidCompletionDpcRoutine
-u_RaidpAdapterDpcRoutine
-u_RaidpAdapterRedirectDpcRoutine
-u_ReportAllWheaErrorsAsNonFatal
-u_RtlQueryRegistryValuesEx
-u_SCSI\%8.8hs%16.16hs%1.1hs
-u_SCSI\%hs%8.8hs%16.16hs
-u_SCSI\%hs%8.8hs%16.16hs%4.4hs
-u_SCSI\%hs%8.8hs%40.40hs
-u_SCSI\%hs%8.8hs%40.40hs%8.8hs
-u_SCSI\%hs&Ven_%hs&Prod_%hs
-u_SCSI\VMLUN%8.8hs%16.16hs%4.4hs
-u_SCSI\VMLUN&Ven_%hs&Prod_%hs
-u_SMR-HostManaged-Enabled
-u_ScannerPeripheral
-u_StorageD3InModernStandby
-u_StorportEtwErrorThrottleLimit
-u_StorportEtwInfoThrottleLimit
-u_StorportEtwWarningThrottleLimit
-u_TelemetryCriticalEventEnabled
-u_TelemetryCriticalEventMaximum
-u_TelemetryDeviceHealthEnabled
-u_TelemetryDeviceHealthPeriod
-u_TelemetryDeviceLogPagesPeriod
-u_TelemetryErrorDataEnabled
-u_TelemetryIoSizeDistributionEnabl
-u_TelemetryPerformanceEnabled
-u_TelemetryPerformanceHighResoluti
-u_TelemetryPerformancePeriod
-u_TotalSenseDataBytes
-u_Translate_SCSI_REQUEST_BLOCK
-u_Translate_STORAGE_REQUEST_BLOCK_r
-u_UncachedExtAlignment
-u_UserWriteCacheSetting
-u_VM_passthrough_LUN_device
-u_WMI\GlobalLogger\
-u_WmiQueryTraceInformation
-u_Year:_%c%c%c%c_Week:_%c%c
-u_\Device\RaidPort%d
-u_\Device\ScsiPort%d
-u_\Device\StorportControl
-u_\Device\StorportExt
-u_\DosDevices\Scsi%d:
-u_\DosDevices\StorportControl
-u_\Registry\Machine\Hardware\Devic
-u_\Registry\Machine\System\Current
-u_\Registry\Machine\System\Setup
-u_\SystemRoot\System32\Drivers\dis
-u_\SystemRoot\System32\Drivers\dum
-u_dumpstorport.sys
+u
+u_%8.8hs%16.16hs%
+u_%hs
+u_%hs_%hs_SCSI_%h
+u_%s
+u_128us,_256us,
+u_4K,_8K,_16K,
+u_64ms,_256ms,
+u_ASCPrePressGrap
+u_Access_denied,
+u_BridgePeriphera
+u_BusSpecificRese
+u_Bus_Number_%d,
+u_BusyPauseTimeIn
+u_Bypass_IO_not_s
+u_CardReaderPerip
+u_CommunicationsP
+u_CreateControlOb
+u_DeviceDumpMaxSi
+u_DeviceDumpVendo
+u_DeviceIdentifie
+u_DeviceQueueIoWa
+u_DeviceTelemetry
+u_DisableExtensio
+u_DisableIdlePowe
+u_DisableNVMeActi
+u_DisableRuntimeP
+u_Dma64BitAddress
+u_DpcCompletionLi
+u_EnableIdlePower
+u_EnableRegistryW
+u_EnclosurePeriph
+u_EtwRegisterClas
+u_ExtendedDSMComm
+u_Failure_found_w
+u_HiberFileHybrid
+u_HighLatencyIoTh
+u_HmbAllocationPo
+u_HmbMaximumSizeI
+u_InitialLunQueue
+u_InitialTimestam
+u_Initializing_IO
+u_Initializing_pe
+u_Interrupt_Manag
+u_Invalid_operati
+u_LogControlEnabl
+u_Logical_Unit_Id
+u_MaxPreAllocated
+u_MaximumLogicalU
+u_MaximumUCXAddre
+u_MediumChangerPe
+u_MinimumIdleTime
+u_MinimumUCXAddre
+u_MiniportBugActi
+u_NVME\%hs&Prod_%
+u_NVMe_%hs_%hs_De
+u_NumberOfRequest
+u_OpticalDiskPeri
+u_OverrideDeviceU
+u_PrinterPeripher
+u_PrivateLogAddre
+u_PublicLogAddres
+u_QueueFullWaitIo
+u_RaidCompletionD
+u_RaidpAdapterDpc
+u_RaidpAdapterRed
+u_ReportAllWheaEr
+u_RtlQueryRegistr
+u_SCSI\%8.8hs%16.
+u_SCSI\%hs%8.8hs%
+u_SCSI\%hs&Ven_%h
+u_SCSI\VMLUN%8.8h
+u_SCSI\VMLUN&Ven
+u_SMR-HostManaged
+u_ScannerPeripher
+u_StorageD3InMode
+u_StorportEtwErro
+u_StorportEtwInfo
+u_StorportEtwWarn
+u_TelemetryCritic
+u_TelemetryDevice
+u_TelemetryErrorD
+u_TelemetryIoSize
+u_TelemetryPerfor
+u_TotalSenseDataB
+u_Translate_SCSI
+u_Translate_STORA
+u_UncachedExtAlig
+u_UserWriteCacheS
+u_VM_passthrough
+u_WMI\GlobalLogge
+u_WmiQueryTraceIn
+u_Year:_%c%c%c%c
+u_\
+u_\Device\RaidPor
+u_\Device\ScsiPor
+u_\Device\Storpor
+u_\DosDevices\Scs
+u_\DosDevices\Sto
+u_\Registry\Machi
+u_\SystemRoot\Sys
+u_dumpstorport.sy

```


### String References

#### Old



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |
|u_TelemetryPerformanceHighResoluti_1c0082690|1|DllInitialize|
|u_TelemetryDeviceHealthPeriod_1c0082818|1|DllInitialize|
|u_EnableIdlePowerManagement_1c0082028|1|FUN_1c00a7724|
|u_LogControlEnable_1c0088b50|1|FUN_1c0042950|
|u_%hs_%hs_SCSI_%hs_Device_1c0081d80|1|FUN_1c00a245c|
|u_\Registry\Machine\System\Setup_1c0089ab8|1|FUN_1c006507c|
|u_Access_denied,_operation_not_sup_1c0089880|4|FUN_1c00aa1fc|
|u_MaximumUCXAddress_1c008a230|1|FUN_1c00affa4|
|u_Interrupt_Management\MessageSign_1c00878a0|1|FUN_1c0035b8c|
|u_TelemetryPerformancePeriod_1c0082768|1|DllInitialize|
|s_AutoATAWindowsString12345678901_1c0089930|2|FUN_1c005d124|
|u_TelemetryCriticalEventMaximum_1c0082890|1|DllInitialize|
|u_SCSI\%hs%8.8hs%16.16hs_1c0081e80|2|FUN_1c001fb5c|
|u_\Device\ScsiPort%d_1c0089210|2|FUN_1c005c25c,FUN_1c005bf14|
|u_RtlQueryRegistryValuesEx_1c0081b18|6|FUN_1c0078d04,FUN_1c0077d84,FUN_1c00a07e8,FUN_1c000fa90,FUN_1c00a1a20|
|u_UncachedExtAlignment_1c008a280|1|FUN_1c00b01cc|
|u_PowerCycleCountOverride_1c0081948|1|FUN_1c001d560|
|u_ExtendedDSMCommandsSupported_1c00828d0|1|DllInitialize|
|u_NVME\%hs_%8.8hs%40.40hs_1c0089680|2|FUN_1c001fb5c|
|u_DeviceDumpVendorGPLogAddress_1c00819f8|1|FUN_1c001816c|
|u_128us,_256us,_512us,_1ms,_4ms,_1_1c00816c0|7|FUN_1c0071a98,FUN_1c006900c,FUN_1c001ba38|
|u_ScannerPeripheral_1c0083658|1||
|u_CreateControlObject_1c0082a48|1|DllInitialize|
|u_MaxPreAllocatedIoResourceCount_1c0082940|1|DllInitialize|
|u_Translate_SCSI_REQUEST_BLOCK_1c0089050|1|FUN_1c00294ae|
|u_Bus_Number_%d,_Target_Id_%d,_LUN_1c0081db0|1|FUN_1c00a245c|
|u_StorageD3InModernStandby_1c0082c08|1|DllInitialize|
|u_SCSI\%hs%8.8hs%40.40hs%8.8hs_1c00896e0|2|FUN_1c001fb5c|
|u_SMR-HostManaged-Enabled_1c00824e0|1|DllInitialize|
|u_TelemetryCriticalEventEnabled_1c0082850|1|DllInitialize|
|u_HiberFileHybridPriority_1c00825b8|1|DllInitialize|
|s_MSFT_1c008a350|2|FUN_1c0073aa0,FUN_1c0073f00|
|u_RaidpAdapterRedirectDpcRoutine_1c00877e8|2|FUN_1c000ee10|
|u_%8.8hs%16.16hs%1.1hs_1c0081e50|2|FUN_1c001fb5c|
|u_dumpstorport.sys_1c0087930|1|FUN_1c00a55c8|
|u_EnableRegistryWatch_1c0082ab0|1|DllInitialize|
|u_64ms,_256ms,_1024ms,_5120ms,_512_1c00817d0|2|FUN_1c006f8d8,FUN_1c001c3c0|
|u_StorportEtwWarningThrottleLimit_1c0088cb0|1|FUN_1c0042950|
|u_BusSpecificResetTimeout_1c0082170|1|FUN_1c00a7724|
|u_\Device\StorportExt_1c0088e20|1|FUN_1c00411e0|
|u_InitialLunQueueDepth_1c0088f90|1|FUN_1c0043580|
|s_Disk1667_1c0088e58|2|FUN_1c001f9f8|
|u_EtwRegisterClassicProvider_1c0088928|1|FUN_1c00a8b7c|
|u_RaidCompletionDpcRoutine_1c0087868|2|FUN_1c003a6a0|
|u_OpticalDiskPeripheral_1c0083700|1||
|u_DeviceTelemetryLiveDumpEnable_1c0088c30|1|FUN_1c0042950|
|u_SCSI\VMLUN&Ven_%hs&Prod_%hs_1c00895a0|1|FUN_1c001f798|
|u_\SystemRoot\System32\Drivers\dis_1c0081ca0|1|FUN_1c000fc84|
|u_MinimumIdleTimeoutInMS_1c00824a0|2|FUN_1c00a30b8|
|u_DpcCompletionLimit_1c0082590|1|DllInitialize|
|u_Dma64BitAddresses_1c0088f18|3|FUN_1c00781bc,FUN_1c0043580|
|u_WmiQueryTraceInformation_1c00888f0|1|FUN_1c00a8b7c|
|u_SCSI\%hs%8.8hs%40.40hs_1c0089720|2|FUN_1c001fb5c|
|u_InitialTimestamp_1c0081978|1|FUN_1c001d480|
|u_PrinterPeripheral_1c0083680|1||
|u_DeviceQueueIoWaitThreshold_1c0088b88|1|FUN_1c0042950|
|s_StorMiniport:_1c00823c0|1|FUN_1c0055ad4|
|u_MinimumUCXAddress_1c008a208|1|FUN_1c00b0054|
|u_UserWriteCacheSetting_1c0089790|3|FUN_1c0062ba4|
|u_TelemetryErrorDataEnabled_1c00827a0|1|DllInitialize|
|u_WMI\GlobalLogger\_1c0088990|3|FUN_1c00a887c,FUN_1c0078d04|
|u_HighLatencyIoThreshold_1c0088bc0|1|FUN_1c0042950|
|u_DisableNVMeActiveNamespaceIDList_1c0082120|1|FUN_1c00a7724|
|u_NVMe_%hs_%hs_Device_1c0089540|1|FUN_1c00a245c|
|u_QueueFullWaitIoPercentage_1c00823d0|2|FUN_1c00a30b8|
|u_Initializing_IO_size_distributio_1c0089bc0|2|FUN_1c00a34a4|
|u_HmbAllocationPolicy_1c00825e8|1|DllInitialize|
|u_TotalSenseDataBytes_1c0082000|1|FUN_1c00a7724|
|u_DeviceIdentifierPage_1c008a118|1|FUN_1c00205dc|
|u_\Registry\Machine\Hardware\Devic_1c00818f0|3|FUN_1c0078350,FUN_1c001d648,FUN_1c007845c|
|u_BusyPauseTimeInMs_1c008a300|2|FUN_1c00af2fc|
|u_\DosDevices\Scsi%d:_1c0089238|2|FUN_1c005c25c,FUN_1c005bf14|
|u_\Device\StorportControl_1c00889d8|1|StorPortInitialize|
|u_NVME\%hs_%8.8hs%40.40hs%8.8hs_1c0089640|2|FUN_1c001fb5c|
|u_Invalid_operation_1c0089850|2|FUN_1c00aa1fc|
|u_StorportEtwErrorThrottleLimit_1c0088c70|1|FUN_1c0042950|
|u_Failure_found_while_processing_o_1c00897c0|2|FUN_1c00aa1fc|
|u_SCSI\%8.8hs%16.16hs%1.1hs_1c0081eb0|2|FUN_1c001fb5c|
|u_BridgePeripheral_1c0083630|1||
|u_HmbMaximumSizeInBytes_1c0082610|1|DllInitialize|
|u_DeviceDumpMaxSize_1c0081a58|1|FUN_1c0018264|
|u_TelemetryDeviceLogPagesPeriod_1c0088bf0|1|FUN_1c0042950|
|u_NumberOfRequests_1c008a258|1|FUN_1c00b0114|
|u_MaximumLogicalUnit_1c008a1e0|1|FUN_1c00afef8|
|u_DisableRuntimePower_1c00829e8|1|DllInitialize|
|u_\SystemRoot\System32\Drivers\dum_1c0087960|1|FUN_1c00a55c8|
|u_EnclosurePeripheral_1c00836a8|1||
|u_NVME\%hs&Prod_%hs_1c0089578|1|FUN_1c001f798|
|u_MediumChangerPeripheral_1c0083730|1||
|u_Year:_%c%c%c%c_Week:_%c%c_1c0089b88|1|FUN_1c006e478|
|u_0123456789abcdef_1c008a328|2|FUN_1c007911c|
|u_Bypass_IO_not_supported_1c00898f0|2|FUN_1c00aa1fc|
|u_\DosDevices\StorportControl_1c0088820|2|StorPortInitialize,FUN_1c003f8a0|
|u_DisableExtensionDriver_1c0088d70|1|FUN_1c0042950|
|u_Initializing_performance_telemet_1c0089b30|2|FUN_1c002132c|
|u_VM_passthrough_LUN_device_1c00894f0|1|FUN_1c00a245c|
|u_4K,_8K,_16K,_32K,_64K,_128K,_256_1c0089c30|4|FUN_1c0071a98,FUN_1c006900c|
|u_RaidpAdapterDpcRoutine_1c0087828|2|FUN_1c000f459|
|u_TelemetryDeviceHealthEnabled_1c00827d8|1|DllInitialize|
|u_Logical_Unit_Id_%d_1c0081fc0|1|FUN_1c00205dc|
|u_PublicLogAddressList_1c0081b78|2|FUN_1c000fa90|
|u_SCSI\%hs&Ven_%hs&Prod_%hs_1c0081d28|1|FUN_1c001f798|
|s_%s_:_1c0089298|2|FUN_1c00571fc|
|u_MiniportBugActionPolicy_1c0082640|1|DllInitialize|
|u_SCSI\%hs%8.8hs%16.16hs%4.4hs_1c0081ee8|2|FUN_1c001fb5c|
|u_ASCPrePressGraphicsPeripheral_1c0083420|2||
|u_CommunicationsPeripheral_1c0083760|1||
|u_Translate_STORAGE_REQUEST_BLOCK_r_1c0082370|2|FUN_1c00210b0,FUN_1c0001770|
|u_TelemetryIoSizeDistributionEnabl_1c0082720|1|DllInitialize|
|u_ReportAllWheaErrorsAsNonFatal_1c0088d30|1|FUN_1c0042950|
|u_DisableIdlePowerManagement_1c0082468|2|FUN_1c00a30b8|
|u_%s\Scsi_Port_%d\SCSI_Bus_%d\Targ_1c0081870|1|FUN_1c001d648|
|u_\Device\RaidPort%d_1c0089260|1|FUN_1c005888c|
|u_SCSI\VMLUN%8.8hs%16.16hs%4.4hs_1c00895e8|2|FUN_1c001fb5c|
|u_StorportEtwInfoThrottleLimit_1c0088cf0|1|FUN_1c0042950|
|u_PrivateLogAddress_1c0081b50|2|FUN_1c000fa90|
|u_\Registry\Machine\System\Current_1c0089ef0|1|FUN_1c000fa90|
|u_TelemetryPerformanceEnabled_1c00826e0|1|DllInitialize|
|s_0123456789ABCDEF_1c0089950|8|FUN_1c0074290,FUN_1c006071c|
|u_CardReaderPeripheral_1c00836d0|1||
|u_DisableRuntimePowerManagement_1c0082060|1|FUN_1c00a7724|
|u_OverrideDeviceUniqueIDCapability_1c00829a0|1|DllInitialize|

#### New



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |
|u_%8.8hs%16.16hs%|2|RaidUnitGetHardwareIds|
|u_CommunicationsP|1||
|u_DisableRuntimeP|1|DllInitialize|
|u_TelemetryPerfor|1|DllInitialize|
|u_DeviceQueueIoWa|1|StorpUpdateDynamicRegistrySettings|
|u_%hs_%hs_SCSI_%h|1|RaUnitQueryDeviceTextIrp|
|u_SMR-HostManaged|1|DllInitialize|
|s_Io|2|StorPortGetDeviceBase|
|u_HmbAllocationPo|1|DllInitialize|
|s_TcgQueryCapabilityConfiguration|4|RaidUnitStorageTcgQueryCapability,RaidAdapterStorageTcgQueryCapability|
|u_128us,_256us,_5|7|StorpTelemetrySendUnitPerfData,StorpTelemetrySendUnitIoSizeDistributionData,McTemplateK0quuujjqzssszstuzzxssssssssssssssssssssssssssssssssssss_EtwWriteTransfer|
|s_new|2|RaidBusEnumeratorProcessModifiedNodes|
|u_PrinterPeripher|1||
|Disk1667CompatibleIdString|2|RaidUnitGetCompatibleIds|
|u_EnableRegistryW|1|DllInitialize|
|u_MiniportBugActi|1|DllInitialize|
|WellKnownPassword|2|RaUnitAtaPassThroughValidateInput|
|s_Disk|1||
|s_RBC|1||
|u_LogControlEnabl|1|StorpUpdateDynamicRegistrySettings|
|u_MaximumUCXAddre|1|PortpReadMaximumUCXAddressEntry|
|u_MinimumUCXAddre|1|PortpReadMinimumUCXAddressEntry|
|u_WMI\GlobalLogge|3|PortTraceInitGlobalLogger,WppInitGlobalLogger|
|u_NumberOfRequest|1|PortpReadNumberOfRequestsEntry|
|u_EnclosurePeriph|1||
|u_\DosDevices\Sto|2|RaDriverUnload,StorPortInitialize|
|u_BridgePeriphera|1||
|u_WmiQueryTraceIn|1|WppLoadTracingSupport|
|u_MaximumLogicalU|1|PortpReadMaximumLogicalUnitEntry|
|u_UncachedExtAlig|1|PortpReadUncachedExtAlignmentEntry|
|u_PrivateLogAddre|2|RaidGetTelemetryLogPageIds|
|u_StorportEtwErro|1|StorpUpdateDynamicRegistrySettings|
|s_ErrInvalidSyncData|1|ParseSyncSessionData|
|u_Initializing_IO|2|StorpInitializePerUnitPerfTelemetry|
|u_Access_denied,_|4|RaUnitStorageManageBypassIOIoctl|
|s_StorMiniport:_|1|RaidHandleTraceNotifyType|
|s_NULL|196|McTemplateK0quuujjzssszssdxxxx_EtwWriteTransfer,McTemplateK0zjquuujsss_EtwWriteTransfer,McTemplateK0zjquuujssstq_EtwWriteTransfer,McTemplateK0quuujjzssstzzxzxzxzx_EtwWriteTransfer,McTemplateK0zqjuuujsssudxx_EtwWriteTransfer,McTemplateK0qjshhssqdu_EtwWriteTransfer,McTemplateK0quuujjzsssstxqqbr14qbr16qbr18qbr20qbr22qbr24qbr26_EtwWriteTransfer,McTemplateK0zqjujssstq_EtwWriteTransfer,McTemplateK0zqjuuussssq_EtwWriteTransfer,McTemplateK0zqjuuusssz_EtwWriteTransfer,McTemplateK0zqjuuussssxx_EtwWriteTransfer,McTemplateK0quuujjzssszq_EtwWriteTransfer,WPP_SF_qqsD,McTemplateK0zqjuuujssstsxx_EtwWriteTransfer,McTemplateK0zqjuuujssstqqbr12qt_EtwWriteTransfer,WPP_SF_qqs,McTemplateK0quuujjzssszhtttqqtuuqqh_EtwWriteTransfer,McTemplateK0zqjuuujssstxqquqiq_EtwWriteTransfer,WPP_SF_qdddDDs,WPP_SF_qqddds,McTemplateK0qqqqquuujjzssszshzhbr18hbr20q_EtwWriteTransfer,McTemplateK0sssxiqxqq_EtwWriteTransfer,McTemplateK0quuujjzssstxuuzqqqqxxxxxxhuuqqbr29qbr31qbr33qbr35qbr37qbr39qbr41qbr43_EtwWriteTransfer,McTemplateK0quuujjqzssszxuqqqqqqqquuuuuuqqiqbr31qbr33_EtwWriteTransfer,McTemplateK0quuujjzsszstxqqbr14uhqbr18_EtwWriteTransfer,McTemplateK0quuujjqzssszstuzzxssssssssssssssssssssssssssssssssssss_EtwWriteTransfer,McTemplateK0quuujjzssszstuqbr14_EtwWriteTransfer,McTemplateK0quuujjqzqssszstxuxxqqxxxxxxxqqqzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_EtwWriteTransfer,McTemplateK0zqjuuujsssxxuxxqqq_EtwWriteTransfer,McTemplateK0quuujjzssszqqd_EtwWriteTransfer,McTemplateK0zqjuuujsssq_EtwWriteTransfer,WPP_SF_is,McTemplateK0zqjuuujsssztt_EtwWriteTransfer,McTemplateK0sssiqxxq_EtwWriteTransfer,McTemplateK0quuujjzssssxqtqbr14_EtwWriteTransfer,McTemplateK0zqjuuujsssqqbr11x_EtwWriteTransfer,McTemplateK0quuujjqzsssztuqquuuuuuqqi_EtwWriteTransfer,McTemplateK0quuujjzssszsxxxx_EtwWriteTransfer,McTemplateK0quuujjzssstqbr11qz_EtwWriteTransfer|
|u_Dma64BitAddress|3|PortMapBuildAdapterEntry,RaCallMiniportFindAdapter|
|u_BusSpecificRese|1|RaidInitializeAdapter|
|u_OpticalDiskPeri|1||
|u_TotalSenseDataB|1|RaidInitializeAdapter|
|u_\Device\Storpor|1|LoadExtensionDriver|
|u_RaidpAdapterDpc|2|FUN_1c000f459|
|u_MaxPreAllocated|1|DllInitialize|
|u_MediumChangerPe|1||
|u_NVME\%hs&Prod_%|1|RaidUnitGetDeviceId|
|u_4K,_8K,_16K,_32|4|StorpTelemetrySendUnitIoSizeDistributionData,McTemplateK0quuujjqzssszstuzzxssssssssssssssssssssssssssssssssssss_EtwWriteTransfer|
|u_HiberFileHybrid|1|DllInitialize|
|u_%s|1|StorpLogPhysicalTopologyInfo|
|u_EnableIdlePower|1|RaidInitializeAdapter|
|s_Worm|1||
|u_UserWriteCacheS|3|RaidUnitSetDefaultWriteCachePolicy|
|s_%s_:_|2|RaGetUnitPerfCounterIdString|
|u_RtlQueryRegistr|6|PortRegistryReadWithHandle,PortRegistryRead,PortTraceInitGlobalLogger,RaidGetTelemetryLogPageIds,PortMiniportRegistryRead|
|u_Bypass_IO_not_s|2|RaUnitStorageManageBypassIOIoctl|
|u_Translate_SCSI_|1|FUN_1c00295ae|
|u_InitialTimestam|1|RaidUnitGetInitialTimestamp|
|u_Initializing_pe|2|StorpInitializeUnitTelemetry|
|u_0123456789abcde|2|WppIntToHex|
|u_ASCPrePressGrap|2||
|u_Bus_Number_%d,_|1|RaUnitQueryDeviceTextIrp|
|u_DeviceIdentifie|1|PortMapBuildLunEntry|
|s_Net|1||
|u_Invalid_operati|2|RaUnitStorageManageBypassIOIoctl|
|s_End|1|FUN_1c0028ad1|
|u_CreateControlOb|1|DllInitialize|
|u_TelemetryIoSize|1|DllInitialize|
|hexDigits|8|RaidHexFromUchar,RaidHexFromUshort|
|u_SCSI\%hs&Ven_%h|1|RaidUnitGetDeviceId|
|u_MinimumIdleTime|2|RaidUnitGetDeviceParameters|
|s_|66|RaidAdapterStorageTcgDeassignLockingObject,RaidAdapterStorageTcgEnumerateLockingObjects,RaidAdapterStorageTcgQueryCapability,RaidAdapterStorageTcgActivateLocking,RaGetUnitPerfCounterIdString,RaidAdapterStorageTcgRevertConfig,_tlgCreate1Sz_char,RaidAdapterStorageTcgSetLockingObjectAuthKey,RaidGetTcgProperties,RaidAdapterStorageTcgGetLockingObjectMetadata,RaidAdapterStorageTcgAssignLockingObject,RaidAdapterStorageTcgEraseLockingObject,RtlStringCbPrintfExA,RaidAdapterStorageTcgSetLockingObject,RaidAdapterStorageTcgResetState,RaidAdapterStorageTcgSetSpAuthorityKey,RaCallMiniportFindAdapter,RaidAdapterStorageTcgSetLockingObjectMetadata|
|u_DisableIdlePowe|2|RaidUnitGetDeviceParameters|
|u_DeviceDumpMaxSi|1|RaidRegGetDeviceDumpMaxSize|
|u_VM_passthrough_|1|RaUnitQueryDeviceTextIrp|
|u_InitialLunQueue|1|RaCallMiniportFindAdapter|
|u_\SystemRoot\Sys|1|RaidAdapterCreateDriverInfo|
|u_HmbMaximumSizeI|1|DllInitialize|
|u_DeviceDumpVendo|1|RaidRegGetDeviceDumpCustomGPLogPage|
|u_SCSI\%8.8hs%16.|2|RaidUnitGetHardwareIds|
|u_\DosDevices\Scs|2|StorDeleteScsiSymbolicLink,StorCreateScsiSymbolicLink|
|u_\Registry\Machi|1|RaidGetTelemetryLogPageIds|
|s_%lld|2|StorpTelemetrySendUnitIoSizeDistributionData|
|u_Year:_%c%c%c%c_|1|StorpTelemetryGetStartStopCycleCounter|
|u_PublicLogAddres|2|RaidGetTelemetryLogPageIds|
|u_Translate_STORA|2|RaidUnitCompleteRequest,TranslateResultToScsiRequestBlock|
|u_DisableNVMeActi|1|RaidInitializeAdapter|
|u_QueueFullWaitIo|2|RaidUnitGetDeviceParameters|
|u_RaidCompletionD|2|RaidCompletionDpcRoutine|
|u_Interrupt_Manag|1|RaidAdapterHack|
|u_DpcCompletionLi|1|DllInitialize|
|u_EtwRegisterClas|1|WppLoadTracingSupport|
|u_TelemetryErrorD|1|DllInitialize|
|u_StorageD3InMode|1|DllInitialize|
|u_SCSI\VMLUN&Ven_|1|RaidUnitGetDeviceId|
|u_Failure_found_w|2|RaUnitStorageManageBypassIOIoctl|
|u_BusyPauseTimeIn|2|PortGetBusyPauseTimeValue|
|s_MSFT____|2|ShimGetMsftId,ATAShimGetMsftId|
|u_\|2|StorpTelemetryFindUnitNvmeLogPages|
|u_dumpstorport.sy|1|RaidAdapterCreateDriverInfo|
|u_CardReaderPerip|1||
|u_SCSI\%hs%8.8hs%|2|RaidUnitGetHardwareIds|
|u_StorportEtwInfo|1|StorpUpdateDynamicRegistrySettings|
|u_\Device\ScsiPor|2|StorDeleteScsiSymbolicLink,StorCreateScsiSymbolicLink|
|s_,_|2|StorpTelemetrySendUnitIoSizeDistributionData|
|u_DeviceTelemetry|1|StorpUpdateDynamicRegistrySettings|
|u_HighLatencyIoTh|1|StorpUpdateDynamicRegistrySettings|
|u_StorportEtwWarn|1|StorpUpdateDynamicRegistrySettings|
|u_DisableExtensio|1|StorpUpdateDynamicRegistrySettings|
|u_RaidpAdapterRed|2|RaidpAdapterRedirectDpcRoutine|
|u_64ms,_256ms,_10|2|StorpTelemetryLogUnitPerfDataCriticalData,StorpTelemetryLogUnitPerfDataMeasures|
|u_ExtendedDSMComm|1|DllInitialize|
|u_Logical_Unit_Id|1|PortMapBuildLunEntry|
|u_NVMe_%hs_%hs_De|1|RaUnitQueryDeviceTextIrp|
|u_ScannerPeripher|1||
|u_OverrideDeviceU|1|DllInitialize|
|u_TelemetryCritic|1|DllInitialize|
|s_retried|2|FUN_1c002b3cf|
|s_%I64u_-_STORMINI:_|1|StorPortDebugPrint|
|u_SCSI\VMLUN%8.8h|2|RaidUnitGetHardwareIds|
|u_ReportAllWheaEr|1|StorpUpdateDynamicRegistrySettings|
|u_%hs|7|RaUnitQueryDeviceTextIrp,RaidUnitGetHardwareIds,RaidUnitGetCompatibleIds|
|u_TelemetryDevice|1|StorpUpdateDynamicRegistrySettings|
|u_|4|RtlStringCchPrintfExW,_tlgCreate1Sz_wchar_t|
|s_ErrInvalidAssignNamespaceResult|1|ParseAssignNamespace|
|u_\Device\RaidPor|1|RaidCreateDeviceName|

# Deleted

## FUN_1c00a99b0

### Function Meta



|Key|storport-2025-05.sys|
| :---: | :---: |
|name|FUN_1c00a99b0|
|fullname|FUN_1c00a99b0|
|refcount|2|
|length|526|
|called|FUN_1c0003280<br>FUN_1c001ecdc<br>FUN_1c0023980<br>FUN_1c003b008<br>FUN_1c0056374<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::IofCallDriver<br>memcpy|
|calling|FUN_1c0026d5a|
|paramcount|2|
|address|1c00a99b0|
|sig|undefined __fastcall FUN_1c00a99b0(longlong param_1, longlong param_2)|
|sym_type|Function|
|sym_source|DEFAULT|
|external|False|


```diff
--- FUN_1c00a99b0
+++ FUN_1c00a99b0
@@ -1,109 +0,0 @@
-
-void FUN_1c00a99b0(longlong param_1,longlong param_2)
-
-{
-  int iVar1;
-  longlong lVar2;
-  longlong *plVar3;
-  uint uVar4;
-  longlong lVar5;
-  int iVar6;
-  uint uVar7;
-  int *piVar8;
-  undefined8 uVar9;
-  longlong lVar10;
-  int local_res10 [2];
-  longlong local_res18 [2];
-  undefined8 in_stack_ffffffffffffffc0;
-  
-  lVar10 = 0;
-  lVar2 = *(longlong *)(param_2 + 0xb8);
-  local_res10[0] = 0;
-  local_res18[0] = 0;
-  plVar3 = *(longlong **)(param_2 + 0x18);
-  uVar7 = *(uint *)(lVar2 + 8);
-  if (plVar3 == (longlong *)0x0) {
-LAB_1c00a99e5:
-    iVar6 = -0x3ffffff3;
-  }
-  else {
-    if ((*(uint *)(lVar2 + 0x10) < 0x14) || (uVar7 < 0x24)) {
-      iVar6 = -0x3ffffffc;
-      goto LAB_1c00a9b6e;
-    }
-    if (((((int)*plVar3 != 0x14) || (*(int *)((longlong)plVar3 + 4) != 0x14)) ||
-        (iVar1 = *(int *)((longlong)plVar3 + 0xc), iVar1 == 0)) ||
-       ((3 < iVar1 || (0 < (int)plVar3[2])))) goto LAB_1c00a99e5;
-    if ((*(uint *)(plVar3 + 1) & 1) != 0) {
-      *(char *)(param_2 + 0x43) = *(char *)(param_2 + 0x43) + '\x01';
-      *(longlong *)(param_2 + 0xb8) = lVar2 + 0x48;
-      IofCallDriver(*(undefined8 *)(*(longlong *)(param_1 + 0x18) + 8),param_2);
-      return;
-    }
-    if (iVar1 == 2) {
-      piVar8 = FUN_1c0056374(*(longlong *)(param_1 + 8),param_2,uVar7,local_res18,local_res10);
-      lVar10 = local_res18[0];
-      iVar6 = (int)piVar8;
-      if (-1 < iVar6) {
-        iVar6 = FUN_1c001ecdc(param_1,param_2,local_res18[0],local_res10[0],(undefined *)0x0,
-                              in_stack_ffffffffffffffc0,0x80);
-        if (iVar6 < 0) {
-          uVar7 = 0;
-LAB_1c00a9b45:
-          *(ulonglong *)(param_2 + 0x38) = (ulonglong)uVar7;
-        }
-        else {
-          FUN_1c0023980(plVar3,0,(undefined1 *)(ulonglong)uVar7);
-          iVar1 = *(int *)(lVar10 + 0x14);
-          if (iVar1 == 6) {
-            *(undefined4 *)plVar3 = 0x24;
-            iVar6 = -0x7ffffffb;
-            *(undefined4 *)(plVar3 + 3) = *(undefined4 *)(lVar10 + 0x3c);
-            lVar2 = *(longlong *)(lVar10 + 0x2c);
-            lVar5 = *(longlong *)(lVar10 + 0x34);
-            *(undefined4 *)((longlong)plVar3 + 4) = 0x24;
-            plVar3[1] = lVar2;
-            plVar3[2] = lVar5;
-            *(undefined8 *)(param_2 + 0x38) = 0x24;
-          }
-          else {
-            if (iVar1 == 0) {
-              *(undefined4 *)plVar3 = 0x24;
-              uVar4 = *(uint *)(lVar10 + 0x3c);
-              if (uVar7 - 0x20 <= *(uint *)(lVar10 + 0x3c)) {
-                uVar4 = uVar7 - 0x20;
-              }
-              *(uint *)((longlong)plVar3 + 4) = uVar4 + 0x20;
-              *(uint *)(plVar3 + 3) = uVar4;
-              lVar2 = *(longlong *)(lVar10 + 0x34);
-              plVar3[1] = *(longlong *)(lVar10 + 0x2c);
-              plVar3[2] = lVar2;
-              memcpy(plVar3 + 4,(void *)(lVar10 + 0x44),(ulonglong)uVar4);
-              uVar7 = *(uint *)((longlong)plVar3 + 4);
-              goto LAB_1c00a9b45;
-            }
-            uVar9 = FUN_1c003b008(iVar1);
-            *(undefined8 *)(param_2 + 0x38) = 0;
-            iVar6 = (int)uVar9;
-          }
-        }
-      }
-LAB_1c00a9b6e:
-      if (lVar10 != 0) {
-        ExFreePoolWithTag(lVar10);
-      }
-      if (((iVar6 + 0x80000000U & 0x80000000) != 0) || (iVar6 == -0x7ffffffb)) goto LAB_1c00a9ba0;
-    }
-    else {
-      iVar6 = -0x3fffff45;
-      if (iVar1 == 3) {
-        iVar6 = -0x3ffffff3;
-      }
-    }
-  }
-  *(undefined8 *)(param_2 + 0x38) = 0;
-LAB_1c00a9ba0:
-  FUN_1c0003280(param_2,0,iVar6);
-  return;
-}
-

```


# Added

## Feature_1890851130__private_IsEnabledFallback

### Function Meta



|Key|storport-2025-06.sys|
| :---: | :---: |
|name|Feature_1890851130__private_IsEnabledFallback|
|fullname|Feature_1890851130__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_1890851130__private_IsEnabledDeviceUsage|
|paramcount|2|
|address|1c0022290|
|sig|undefined __fastcall Feature_1890851130__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_1890851130__private_IsEnabledFallback
+++ Feature_1890851130__private_IsEnabledFallback
@@ -0,0 +1,8 @@
+
+void Feature_1890851130__private_IsEnabledFallback(ulonglong param_1,int param_2)
+
+{
+  wil_details_IsEnabledFallback(param_1,param_2,&wil_details_featureDescriptors_a);
+  return;
+}
+

```


## RaidCallerIsAdmin

### Function Meta



|Key|storport-2025-06.sys|
| :---: | :---: |
|name|RaidCallerIsAdmin|
|fullname|RaidCallerIsAdmin|
|refcount|3|
|length|126|
|called|NTOSKRNL.EXE::SeCaptureSubjectContext<br>NTOSKRNL.EXE::SeLockSubjectContext<br>NTOSKRNL.EXE::SeReleaseSubjectContext<br>NTOSKRNL.EXE::SeTokenIsAdmin<br>NTOSKRNL.EXE::SeUnlockSubjectContext|
|calling|RaUnitStorageDiagnosticIoctl<br>RaidAdapterDiagnosticIoctl|
|paramcount|0|
|address|1c0022fdc|
|sig|undefined1 __fastcall RaidCallerIsAdmin(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- RaidCallerIsAdmin
+++ RaidCallerIsAdmin
@@ -0,0 +1,24 @@
+
+undefined1 RaidCallerIsAdmin(void)
+
+{
+  undefined1 uVar1;
+  longlong lVar2;
+  longlong local_28 [4];
+  
+  local_28[0] = 0;
+  local_28[1] = 0;
+  local_28[2] = 0;
+  local_28[3] = 0;
+  SeCaptureSubjectContext(local_28);
+  SeLockSubjectContext(local_28);
+  lVar2 = local_28[2];
+  if (local_28[0] != 0) {
+    lVar2 = local_28[0];
+  }
+  uVar1 = SeTokenIsAdmin(lVar2);
+  SeUnlockSubjectContext(local_28);
+  SeReleaseSubjectContext(local_28);
+  return uVar1;
+}
+

```


## RaUnitStorageDiagnosticIoctl

### Function Meta



|Key|storport-2025-06.sys|
| :---: | :---: |
|name|RaUnitStorageDiagnosticIoctl|
|fullname|RaUnitStorageDiagnosticIoctl|
|refcount|2|
|length|568|
|called|Feature_1890851130__private_IsEnabledDeviceUsage<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::IofCallDriver<br>RaBuildDiagnosticBufferForMiniport<br>RaidCallerIsAdmin<br>RaidCompleteRequestEx<br>RaidDiagnosticIoctlStatusToNtStatus<br>RaidUnitSendSrbIoControlSynchronously<br>memcpy<br>memset|
|calling|FUN_1c0026e5a|
|paramcount|2|
|address|1c00a99f0|
|sig|undefined __fastcall RaUnitStorageDiagnosticIoctl(longlong param_1, longlong param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- RaUnitStorageDiagnosticIoctl
+++ RaUnitStorageDiagnosticIoctl
@@ -0,0 +1,119 @@
+
+void RaUnitStorageDiagnosticIoctl(longlong param_1,longlong param_2)
+
+{
+  int iVar1;
+  longlong lVar2;
+  int *_Dst;
+  uint uVar3;
+  undefined8 uVar4;
+  char cVar5;
+  int iVar6;
+  uint uVar7;
+  ulonglong uVar8;
+  int *piVar9;
+  undefined8 uVar10;
+  longlong lVar11;
+  int local_res10 [2];
+  longlong local_res18 [2];
+  undefined8 in_stack_ffffffffffffffc0;
+  
+  lVar2 = *(longlong *)(param_2 + 0xb8);
+  local_res10[0] = 0;
+  local_res18[0] = 0;
+  uVar7 = *(uint *)(lVar2 + 8);
+  uVar8 = Feature_1890851130__private_IsEnabledDeviceUsage();
+  lVar11 = 0;
+  if (((int)uVar8 == 0) ||
+     ((cVar5 = RaidCallerIsAdmin(), cVar5 != '\0' &&
+      (lVar11 = local_res18[0], *(void **)(param_2 + 0x98) == SystemReserved1[0xf])))) {
+    _Dst = *(int **)(param_2 + 0x18);
+    if (_Dst != (int *)0x0) {
+      if ((*(uint *)(lVar2 + 0x10) < 0x14) || (uVar7 < 0x24)) {
+        iVar6 = -0x3ffffffc;
+        goto LAB_1c00a9bd8;
+      }
+      if ((((*_Dst == 0x14) && (_Dst[1] == 0x14)) && (iVar1 = _Dst[3], iVar1 != 0)) &&
+         ((iVar1 < 4 && (_Dst[4] < 1)))) {
+        if ((_Dst[2] & 1U) != 0) {
+          *(char *)(param_2 + 0x43) = *(char *)(param_2 + 0x43) + '\x01';
+          *(longlong *)(param_2 + 0xb8) = *(longlong *)(param_2 + 0xb8) + 0x48;
+          IofCallDriver(*(undefined8 *)(*(longlong *)(param_1 + 0x18) + 8),param_2);
+          return;
+        }
+        if (iVar1 != 2) {
+          iVar6 = -0x3fffff45;
+          if (iVar1 == 3) {
+            iVar6 = -0x3ffffff3;
+          }
+          goto LAB_1c00a9c05;
+        }
+        piVar9 = RaBuildDiagnosticBufferForMiniport
+                           (*(longlong *)(param_1 + 8),param_2,uVar7,local_res18,local_res10);
+        lVar11 = local_res18[0];
+        iVar6 = (int)piVar9;
+        if (-1 < iVar6) {
+          iVar6 = RaidUnitSendSrbIoControlSynchronously
+                            (param_1,param_2,local_res18[0],local_res10[0],(undefined *)0x0,
+                             in_stack_ffffffffffffffc0,0x80);
+          if (iVar6 < 0) {
+            uVar7 = 0;
+LAB_1c00a9bb9:
+            *(ulonglong *)(param_2 + 0x38) = (ulonglong)uVar7;
+          }
+          else {
+            memset(_Dst,0,(ulonglong)uVar7);
+            iVar1 = *(int *)(lVar11 + 0x14);
+            if (iVar1 == 6) {
+              *_Dst = 0x24;
+              iVar6 = -0x7ffffffb;
+              _Dst[6] = *(int *)(lVar11 + 0x3c);
+              uVar10 = *(undefined8 *)(lVar11 + 0x2c);
+              uVar4 = *(undefined8 *)(lVar11 + 0x34);
+              _Dst[1] = 0x24;
+              *(undefined8 *)(_Dst + 2) = uVar10;
+              *(undefined8 *)(_Dst + 4) = uVar4;
+              *(undefined8 *)(param_2 + 0x38) = 0x24;
+            }
+            else {
+              if (iVar1 == 0) {
+                *_Dst = 0x24;
+                uVar3 = *(uint *)(lVar11 + 0x3c);
+                if (uVar7 - 0x20 <= *(uint *)(lVar11 + 0x3c)) {
+                  uVar3 = uVar7 - 0x20;
+                }
+                _Dst[1] = uVar3 + 0x20;
+                _Dst[6] = uVar3;
+                uVar10 = *(undefined8 *)(lVar11 + 0x34);
+                *(undefined8 *)(_Dst + 2) = *(undefined8 *)(lVar11 + 0x2c);
+                *(undefined8 *)(_Dst + 4) = uVar10;
+                memcpy(_Dst + 8,(void *)(lVar11 + 0x44),(ulonglong)uVar3);
+                uVar7 = _Dst[1];
+                goto LAB_1c00a9bb9;
+              }
+              uVar10 = RaidDiagnosticIoctlStatusToNtStatus(iVar1);
+              *(undefined8 *)(param_2 + 0x38) = 0;
+              iVar6 = (int)uVar10;
+            }
+          }
+        }
+LAB_1c00a9bd8:
+        if (lVar11 != 0) {
+          ExFreePoolWithTag(lVar11);
+        }
+        if (((iVar6 + 0x80000000U & 0x80000000) != 0) || (iVar6 == -0x7ffffffb)) goto LAB_1c00a9c0a;
+        goto LAB_1c00a9c05;
+      }
+    }
+    iVar6 = -0x3ffffff3;
+  }
+  else {
+    iVar6 = -0x3fffffde;
+  }
+LAB_1c00a9c05:
+  *(undefined8 *)(param_2 + 0x38) = 0;
+LAB_1c00a9c0a:
+  RaidCompleteRequestEx(param_2,0,iVar6);
+  return;
+}
+

```


## NTOSKRNL.EXE::SeTokenIsAdmin

### Function Meta



|Key|storport-2025-06.sys|
| :---: | :---: |
|name|SeTokenIsAdmin|
|fullname|NTOSKRNL.EXE::SeTokenIsAdmin|
|refcount|2|
|length|0|
|called||
|calling|RaidCallerIsAdmin|
|paramcount|0|
|address|EXTERNAL:000000e5|
|sig|undefined SeTokenIsAdmin(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|True|


*No code available for NTOSKRNL.EXE::SeTokenIsAdmin*
# Modified


*Modified functions contain code changes*
## FUN_1c0022c88

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|code,name,fullname,length,sig,address,calling,called|
|ratio|0.53|
|i_ratio|0.5|
|m_ratio|0.94|
|b_ratio|0.94|
|match_types|StructuralGraphExactHash|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|`name`|FUN_1c0022c88|wil_details_FeatureReporting_ReportUsageToService|
|`fullname`|FUN_1c0022c88|wil_details_FeatureReporting_ReportUsageToService|
|refcount|2|2|
|`length`|115|126|
|`called`|FUN_1c0022d04<br>FUN_1c0023120<br>_guard_dispatch_icall|_guard_dispatch_icall<br>wil_details_FeatureReporting_ReportUsageToServiceDirect<br>wil_details_MapReportingKind|
|`calling`|FUN_1c0023090|wil_details_IsEnabledFallback|
|paramcount|3|3|
|`address`|1c0022c88|1c0022614|
|`sig`|undefined __fastcall FUN_1c0022c88(undefined8 param_1, undefined8 param_2, uint param_3)|undefined __fastcall wil_details_FeatureReporting_ReportUsageToService(longlong param_1, undefined8 param_2, int param_3)|
|sym_type|Function|Function|
|sym_source|DEFAULT|IMPORTED|
|external|False|False|

### FUN_1c0022c88 Called Diff


```diff
--- FUN_1c0022c88 called
+++ wil_details_FeatureReporting_ReportUsageToService called
@@ -1,2 +0,0 @@
-FUN_1c0022d04
-FUN_1c0023120
@@ -3,0 +2,2 @@
+wil_details_FeatureReporting_ReportUsageToServiceDirect
+wil_details_MapReportingKind
```


### FUN_1c0022c88 Calling Diff


```diff
--- FUN_1c0022c88 calling
+++ wil_details_FeatureReporting_ReportUsageToService calling
@@ -1 +1 @@
-FUN_1c0023090
+wil_details_IsEnabledFallback
```


### FUN_1c0022c88 Diff


```diff
--- FUN_1c0022c88
+++ wil_details_FeatureReporting_ReportUsageToService
@@ -1,24 +1,25 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 
-void FUN_1c0022c88(undefined8 param_1,undefined8 param_2,uint param_3)
+void wil_details_FeatureReporting_ReportUsageToService
+               (longlong param_1,undefined8 param_2,int param_3)
 
 {
   bool bVar1;
   uint uVar2;
   undefined7 extraout_var;
-  ulonglong uVar3;
-  uint uVar4;
-  uint local_res18 [4];
+  uint uVar3;
+  int local_res18 [4];
   
-  uVar4 = (uint)param_2 & 1;
-  uVar3 = (ulonglong)param_3;
+  uVar3 = (uint)param_2 & 1;
   local_res18[0] = param_3;
-  uVar2 = FUN_1c0023120(param_3,uVar4);
-  bVar1 = FUN_1c0022d04(uVar3,param_2,(ulonglong)uVar2);
-  if (((int)CONCAT71(extraout_var,bVar1) != 0) && (DAT_0 != 0)) {
-    (*(code *)DAT_0)(0x3584a35,&DAT_1c0083158,0,uVar4,local_res18,0,0,1);
+  uVar2 = wil_details_MapReportingKind(param_3,uVar3);
+  bVar1 = wil_details_FeatureReporting_ReportUsageToServiceDirect(param_1,param_2,(ulonglong)uVar2);
+  if (((int)CONCAT71(extraout_var,bVar1) != 0) && (g_wil_details_pfnFeatureLoggingHook != 0)) {
+    (*(code *)g_wil_details_pfnFeatureLoggingHook)
+              (*(undefined4 *)(param_1 + 0x18),*(undefined8 *)(param_1 + 0x10),0,uVar3,local_res18,0
+               ,0,1);
   }
   return;
 }
 

```


## FUN_1c0022d04

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|code,name,fullname,length,sig,address,calling,called|
|ratio|0.29|
|i_ratio|0.56|
|m_ratio|0.95|
|b_ratio|0.95|
|match_types|StructuralGraphExactHash|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|`name`|FUN_1c0022d04|wil_details_FeatureReporting_ReportUsageToServiceDirect|
|`fullname`|FUN_1c0022d04|wil_details_FeatureReporting_ReportUsageToServiceDirect|
|refcount|2|2|
|`length`|227|233|
|`called`|FUN_1c0022b08<br>NTOSKRNL.EXE::RtlNotifyFeatureUsage<br>__security_check_cookie<br>_guard_dispatch_icall|NTOSKRNL.EXE::RtlNotifyFeatureUsage<br>__security_check_cookie<br>_guard_dispatch_icall<br>wil_details_FeatureReporting_RecordUsageInCache|
|`calling`|FUN_1c0022c88|wil_details_FeatureReporting_ReportUsageToService|
|paramcount|3|3|
|`address`|1c0022d04|1c002269c|
|`sig`|bool __fastcall FUN_1c0022d04(undefined8 param_1, undefined8 param_2, ulonglong param_3)|bool __fastcall wil_details_FeatureReporting_ReportUsageToServiceDirect(longlong param_1, undefined8 param_2, ulonglong param_3)|
|sym_type|Function|Function|
|sym_source|DEFAULT|IMPORTED|
|external|False|False|

### FUN_1c0022d04 Called Diff


```diff
--- FUN_1c0022d04 called
+++ wil_details_FeatureReporting_ReportUsageToServiceDirect called
@@ -1 +0,0 @@
-FUN_1c0022b08
@@ -4,0 +4 @@
+wil_details_FeatureReporting_RecordUsageInCache
```


### FUN_1c0022d04 Calling Diff


```diff
--- FUN_1c0022d04 calling
+++ wil_details_FeatureReporting_ReportUsageToServiceDirect calling
@@ -1 +1 @@
-FUN_1c0022c88
+wil_details_FeatureReporting_ReportUsageToService
```


### FUN_1c0022d04 Diff


```diff
--- FUN_1c0022d04
+++ wil_details_FeatureReporting_ReportUsageToServiceDirect
@@ -1,44 +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 FUN_1c0022d04(undefined8 param_1,undefined8 param_2,ulonglong param_3)
+bool wil_details_FeatureReporting_ReportUsageToServiceDirect
+               (longlong param_1,undefined8 param_2,ulonglong param_3)
 
 {
   uint6 uVar1;
   uint *puVar2;
-  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;
+  undefined1 auStack_98 [32];
+  uint *local_78;
+  undefined8 local_68;
+  uint local_60 [6];
+  uint local_48;
+  uint uStack_44;
+  uint uStack_40;
+  uint uStack_3c;
+  undefined8 local_38;
+  ulonglong local_30;
   
-  local_20 = DAT_0 ^ (ulonglong)auStack_88;
-  puVar2 = FUN_1c0022b08(local_50,(uint *)&DAT_1,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 (DAT_2 != 0) {
-    local_68 = &local_38;
-    (*(code *)DAT_2)(0x3584a35,param_3 & 0xffffffff,1,&DAT_1c0092ba8);
+  local_30 = __security_cookie ^ (ulonglong)auStack_98;
+  puVar2 = wil_details_FeatureReporting_RecordUsageInCache
+                     (local_60,*(uint **)(param_1 + 8),param_3,(uint)((ulonglong)param_2 >> 0x20));
+  local_48 = *puVar2;
+  uStack_44 = puVar2[1];
+  uStack_40 = puVar2[2];
+  uStack_3c = puVar2[3];
+  local_38 = *(undefined8 *)(puVar2 + 4);
+  if (g_wil_details_recordFeatureUsage != 0) {
+    local_78 = &local_48;
+    (*(code *)g_wil_details_recordFeatureUsage)
+              (*(undefined4 *)(param_1 + 0x18),param_3 & 0xffffffff,1,*(undefined8 *)(param_1 + 8));
   }
   if ((((uint)param_2 >> 10 & 1) != 0) && ((int)param_3 != 0xfe)) {
-    local_58._0_6_ = CONCAT24((short)(param_3 & 0xffffffff),0x3584a35);
-    uVar1 = (uint6)local_58;
-    local_58 = (ulonglong)(uint6)local_58;
+    local_68._0_6_ = CONCAT24((short)(param_3 & 0xffffffff),*(undefined4 *)(param_1 + 0x18));
+    uVar1 = (uint6)local_68;
+    local_68 = (ulonglong)(uint6)local_68;
     if (((uint)param_2 >> 0xb & 1) != 0) {
-      local_58 = CONCAT26(1,uVar1);
+      local_68 = CONCAT26(1,uVar1);
     }
-    RtlNotifyFeatureUsage(&local_58);
+    RtlNotifyFeatureUsage(&local_68);
   }
-  return (int)local_28 == 0;
+  return (int)local_38 == 0;
 }
 

```


## FUN_1c0023090

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|code,name,fullname,refcount,length,sig,address,calling,called|
|ratio|0.47|
|i_ratio|0.43|
|m_ratio|0.96|
|b_ratio|0.94|
|match_types|StructuralGraphExactHash|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|`name`|FUN_1c0023090|wil_details_IsEnabledFallback|
|`fullname`|FUN_1c0023090|wil_details_IsEnabledFallback|
|`refcount`|2|3|
|`length`|135|140|
|`called`|FUN_1c0022c88<br>FUN_1c0022df0<br>FUN_1c0022ef0|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|`calling`|FUN_1c00228e0|Feature_1890851130__private_IsEnabledFallback<br>Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback|
|paramcount|2|3|
|`address`|1c0023090|1c0022a3c|
|`sig`|uint __fastcall FUN_1c0023090(undefined4 * 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|DEFAULT|IMPORTED|
|external|False|False|

### FUN_1c0023090 Called Diff


```diff
--- FUN_1c0023090 called
+++ wil_details_IsEnabledFallback called
@@ -1,3 +1,3 @@
-FUN_1c0022c88
-FUN_1c0022df0
-FUN_1c0022ef0
+wil_details_FeatureReporting_ReportUsageToService
+wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState
+wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
```


### FUN_1c0023090 Calling Diff


```diff
--- FUN_1c0023090 calling
+++ wil_details_IsEnabledFallback calling
@@ -1 +1,2 @@
-FUN_1c00228e0
+Feature_1890851130__private_IsEnabledFallback
+Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback
```


### FUN_1c0023090 Diff


```diff
--- FUN_1c0023090
+++ wil_details_IsEnabledFallback
@@ -1,22 +1,22 @@
 
-uint FUN_1c0023090(undefined4 *param_1,uint param_2)
+uint wil_details_IsEnabledFallback(ulonglong param_1,int param_2,undefined8 *param_3)
 
 {
   uint uVar1;
-  undefined4 *puVar2;
-  ulonglong local_res18;
+  ulonglong local_res8;
   
   uVar1 = (uint)param_1;
-  local_res18 = (ulonglong)param_1 & 0xffffffff;
-  if (((ulonglong)param_1 & 2) == 0) {
-    puVar2 = &DAT_0;
-    local_res18 = FUN_1c0022df0(&DAT_0,(ulonglong)param_1,0x1c0091d58);
-    param_1 = puVar2;
-    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) && (FUN_1c0022c88(param_1,local_res18,param_2), param_2 - 3 < 2)) {
-    FUN_1c0022ef0((uint)local_res18,param_2);
+  if ((param_2 != 0) &&
+     (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;
 }
 

```


## FUN_1c00228e0

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|code,name,fullname,length,sig,address,calling,called|
|ratio|0.73|
|i_ratio|0.67|
|m_ratio|0.89|
|b_ratio|0.89|
|match_types|Implied Match|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|`name`|FUN_1c00228e0|Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback|
|`fullname`|FUN_1c00228e0|Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback|
|refcount|2|2|
|`length`|14|21|
|`called`|FUN_1c0023090|wil_details_IsEnabledFallback|
|`calling`|FUN_1c00228a8|Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledDeviceUsage|
|paramcount|2|2|
|`address`|1c00228e0|1c0023288|
|`sig`|undefined __fastcall FUN_1c00228e0(undefined4 * param_1, uint param_2)|undefined __fastcall Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|Function|
|sym_source|DEFAULT|IMPORTED|
|external|False|False|

### FUN_1c00228e0 Called Diff


```diff
--- FUN_1c00228e0 called
+++ Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback called
@@ -1 +1 @@
-FUN_1c0023090
+wil_details_IsEnabledFallback
```


### FUN_1c00228e0 Calling Diff


```diff
--- FUN_1c00228e0 calling
+++ Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback calling
@@ -1 +1 @@
-FUN_1c00228a8
+Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledDeviceUsage
```


### FUN_1c00228e0 Diff


```diff
--- FUN_1c00228e0
+++ Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback
@@ -1,8 +1,10 @@
 
-void FUN_1c00228e0(undefined4 *param_1,uint param_2)
+void Feature_Servicing_ScsiPassthroughRobustness__private_IsEnabledFallback
+               (ulonglong param_1,int param_2)
 
 {
-  FUN_1c0023090(param_1,param_2);
+  wil_details_IsEnabledFallback
+            (param_1,param_2,&Feature_Servicing_ScsiPassthroughRobustness__private_descriptor);
   return;
 }
 

```


## FUN_1c0022ef0

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|code,name,fullname,length,sig,address,calling|
|ratio|0.41|
|i_ratio|0.43|
|m_ratio|0.87|
|b_ratio|0.83|
|match_types|Implied Match|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|`name`|FUN_1c0022ef0|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|`fullname`|FUN_1c0022ef0|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|refcount|2|2|
|`length`|58|74|
|called|||
|`calling`|FUN_1c0023090|wil_details_IsEnabledFallback|
|paramcount|2|3|
|`address`|1c0022ef0|1c002288c|
|`sig`|undefined __fastcall FUN_1c0022ef0(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|DEFAULT|IMPORTED|
|external|False|False|

### FUN_1c0022ef0 Calling Diff


```diff
--- FUN_1c0022ef0 calling
+++ wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath calling
@@ -1 +1 @@
-FUN_1c0023090
+wil_details_IsEnabledFallback
```


### FUN_1c0022ef0 Diff


```diff
--- FUN_1c0022ef0
+++ wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
@@ -1,40 +1,50 @@
 
-void FUN_1c0022ef0(uint param_1,int param_2)
+void wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
+               (uint param_1,int param_2,undefined8 *param_3)
 
 {
   uint uVar1;
-  uint uVar2;
+  uint *puVar2;
   uint uVar3;
-  bool bVar4;
+  uint uVar4;
+  bool bVar5;
   
-  uVar2 = DAT_0;
+  puVar2 = (uint *)*param_3;
   if (param_2 == 3) {
-    uVar3 = 0x10;
+    uVar4 = 0x10;
   }
   else {
     if (param_2 != 4) {
       return;
     }
-    uVar3 = 0x20;
+    uVar4 = 0x20;
   }
-  while( true ) {
-    if ((uVar2 & 2) == 0) {
-      return;
-    }
-    if (((uVar2 ^ param_1) & 1) != 0) break;
+  if ((*(char *)((longlong)param_3 + 0x1e) == '\0') && (*(char *)((longlong)param_3 + 0x1d) == '\0')
+     ) {
+    uVar3 = *puVar2;
+    do {
+      if ((uVar3 & 2) == 0) {
+        return;
+      }
+      if (((uVar3 ^ param_1) & 1) != 0) {
+        return;
+      }
+      LOCK();
+      uVar1 = *puVar2;
+      bVar5 = uVar3 == uVar1;
+      if (bVar5) {
+        *puVar2 = uVar3 | uVar4;
+        uVar1 = uVar3;
+      }
+      uVar3 = uVar1;
+      UNLOCK();
+    } while (!bVar5);
+  }
+  else {
     LOCK();
-    bVar4 = uVar2 != DAT_0;
-    uVar1 = uVar2 | uVar3;
-    if (bVar4) {
-      uVar2 = DAT_0;
-      uVar1 = DAT_0;
-    }
-    DAT_0 = uVar1;
+    *puVar2 = *puVar2 | uVar4;
     UNLOCK();
-    if (!bVar4) {
-      return;
-    }
   }
   return;
 }
 

```


## FUN_1c00a5c58

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|code,name,fullname,length,sig,calling,called|
|ratio|0.43|
|i_ratio|0.65|
|m_ratio|0.98|
|b_ratio|0.97|
|match_types|Implied Match|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|`name`|FUN_1c00a5c58|RaidAdapterDiagnosticIoctl|
|`fullname`|FUN_1c00a5c58|RaidAdapterDiagnosticIoctl|
|refcount|2|2|
|`length`|1303|1360|
|`called`|<details><summary>Expand for full list:<br>FUN_1c0003280<br>FUN_1c0004aa4<br>FUN_1c00079e4<br>FUN_1c000826c<br>FUN_1c000832c<br>FUN_1c00083b8<br>FUN_1c0008664<br>FUN_1c00089a8<br>FUN_1c00089e4<br>FUN_1c0008a38<br>FUN_1c0008bac</summary>FUN_1c0008c08<br>FUN_1c000f794<br>FUN_1c0019dd4<br>FUN_1c0023980<br>FUN_1c0036af8<br>FUN_1c003b008<br>FUN_1c003e890<br>FUN_1c003eaa4<br>FUN_1c0056374<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeWaitForSingleObject<br>memcpy</details>|<details><summary>Expand for full list:<br>Feature_1890851130__private_IsEnabledDeviceUsage<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeWaitForSingleObject<br>RaBuildDiagnosticBufferForMiniport<br>RaSrbSetMiniportContext<br>RaidAdapterExecuteXrb<br>RaidAdapterPoFxActivateComponent<br>RaidAdapterPoFxIdleComponent<br>RaidAdapterPoFxIdleComponentFromMiniport<br>RaidAdapterRaiseIrqlAndExecuteXrb</summary>RaidAllocateSrb<br>RaidCallerIsAdmin<br>RaidCompleteRequestEx<br>RaidDiagnosticIoctlStatusToNtStatus<br>RaidFreeSrb<br>RaidSrbStatusToNtStatus<br>RaidXrbDeallocateResources<br>RaidXrbSetCompletionRoutine<br>RaidZeroXrb<br>StorAllocateContiguousIoResources<br>StorFreeContiguousIoResources<br>WPP_SF_dd<br>WPP_SF_qq<br>memcpy<br>memset</details>|
|`calling`|FUN_1c0027699|FUN_1c0027799|
|paramcount|2|2|
|address|1c00a5c58|1c00a5c58|
|`sig`|undefined __fastcall FUN_1c00a5c58(longlong param_1, longlong param_2)|undefined __fastcall RaidAdapterDiagnosticIoctl(longlong param_1, longlong param_2)|
|sym_type|Function|Function|
|sym_source|DEFAULT|IMPORTED|
|external|False|False|

### FUN_1c00a5c58 Called Diff


```diff
--- FUN_1c00a5c58 called
+++ RaidAdapterDiagnosticIoctl called
@@ -1,20 +1 @@
-FUN_1c0003280
-FUN_1c0004aa4
-FUN_1c00079e4
-FUN_1c000826c
-FUN_1c000832c
-FUN_1c00083b8
-FUN_1c0008664
-FUN_1c00089a8
-FUN_1c00089e4
-FUN_1c0008a38
-FUN_1c0008bac
-FUN_1c0008c08
-FUN_1c000f794
-FUN_1c0019dd4
-FUN_1c0023980
-FUN_1c0036af8
-FUN_1c003b008
-FUN_1c003e890
-FUN_1c003eaa4
-FUN_1c0056374
+Feature_1890851130__private_IsEnabledDeviceUsage
@@ -23,0 +5,20 @@
+RaBuildDiagnosticBufferForMiniport
+RaSrbSetMiniportContext
+RaidAdapterExecuteXrb
+RaidAdapterPoFxActivateComponent
+RaidAdapterPoFxIdleComponent
+RaidAdapterPoFxIdleComponentFromMiniport
+RaidAdapterRaiseIrqlAndExecuteXrb
+RaidAllocateSrb
+RaidCallerIsAdmin
+RaidCompleteRequestEx
+RaidDiagnosticIoctlStatusToNtStatus
+RaidFreeSrb
+RaidSrbStatusToNtStatus
+RaidXrbDeallocateResources
+RaidXrbSetCompletionRoutine
+RaidZeroXrb
+StorAllocateContiguousIoResources
+StorFreeContiguousIoResources
+WPP_SF_dd
+WPP_SF_qq
@@ -24,0 +26 @@
+memset
```


### FUN_1c00a5c58 Calling Diff


```diff
--- FUN_1c00a5c58 calling
+++ RaidAdapterDiagnosticIoctl calling
@@ -1 +1 @@
-FUN_1c0027699
+FUN_1c0027799
```


### FUN_1c00a5c58 Diff


```diff
--- FUN_1c00a5c58
+++ RaidAdapterDiagnosticIoctl
@@ -1,229 +1,242 @@
 
-void FUN_1c00a5c58(longlong param_1,longlong param_2)
+void RaidAdapterDiagnosticIoctl(longlong param_1,longlong param_2)
 
 {
   undefined4 *puVar1;
   uint uVar2;
   int iVar3;
   undefined4 uVar4;
   uint uVar5;
-  longlong *plVar6;
-  longlong lVar7;
-  longlong lVar8;
-  int iVar9;
+  int *_Dst;
+  undefined8 uVar6;
+  char cVar7;
+  int iVar8;
+  ulonglong uVar9;
   int *piVar10;
   undefined2 *puVar11;
   longlong lVar12;
   undefined8 uVar13;
-  ulonglong uVar14;
-  undefined *puVar15;
-  undefined4 *puVar16;
-  uint *puVar17;
+  undefined *puVar14;
+  undefined4 *puVar15;
+  uint *puVar16;
   int local_res10 [2];
   uint local_res18;
   uint *local_res20;
   
-  iVar9 = 0;
+  lVar12 = *(longlong *)(param_2 + 0xb8);
+  iVar8 = 0;
+  local_res20 = (uint *)0x0;
+  puVar11 = (undefined2 *)0x0;
   local_res10[0] = 0;
-  plVar6 = *(longlong **)(param_2 + 0x18);
-  puVar11 = (undefined2 *)0x0;
-  local_res20 = (uint *)0x0;
-  uVar2 = *(uint *)(*(longlong *)(param_2 + 0xb8) + 8);
+  uVar2 = *(uint *)(lVar12 + 8);
   local_res18 = uVar2;
-  if (plVar6 != (longlong *)0x0) {
-    if ((*(uint *)(*(longlong *)(param_2 + 0xb8) + 0x10) < 0x14) || (uVar2 < 0x24)) {
-      iVar9 = -0x3ffffff3;
-      puVar17 = (uint *)0x0;
-      goto LAB_0;
+  uVar9 = Feature_1890851130__private_IsEnabledDeviceUsage();
+  puVar16 = (uint *)0x0;
+  if (((int)uVar9 != 0) &&
+     ((cVar7 = RaidCallerIsAdmin(), cVar7 == '\0' ||
+      (puVar16 = local_res20, *(void **)(param_2 + 0x98) != SystemReserved1[0xf])))) {
+    iVar8 = -0x3fffffde;
+    goto LAB_0;
+  }
+  _Dst = *(int **)(param_2 + 0x18);
+  if (_Dst != (int *)0x0) {
+    if ((*(uint *)(lVar12 + 0x10) < 0x14) || (uVar2 < 0x24)) {
+      iVar8 = -0x3ffffff3;
+      goto LAB_1;
     }
-    if (((((int)*plVar6 == 0x14) && (*(int *)((longlong)plVar6 + 4) == 0x14)) &&
-        (iVar3 = *(int *)((longlong)plVar6 + 0xc), iVar3 != 0)) &&
-       ((iVar3 < 4 && ((int)plVar6[2] < 1)))) {
+    if ((((*_Dst == 0x14) && (_Dst[1] == 0x14)) && (iVar3 = _Dst[3], iVar3 != 0)) &&
+       ((iVar3 < 4 && (_Dst[4] < 1)))) {
       if (iVar3 == 1) {
-        FUN_1c0023980(plVar6,0,(undefined1 *)(ulonglong)uVar2);
-        *(undefined4 *)plVar6 = 0x24;
-        plVar6[1] = 0x4cf92d4724bd81aa;
-        plVar6[2] = -0x3e98699e47228f6e;
+        memset(_Dst,0,(ulonglong)uVar2);
+        *_Dst = 0x24;
+        _Dst[2] = 0x24bd81aa;
+        _Dst[3] = 0x4cf92d47;
+        _Dst[4] = -0x47228f6e;
+        _Dst[5] = -0x3e98699f;
         if (uVar2 < 0x1200038) {
-          *(undefined4 *)(plVar6 + 3) = 0x1200018;
-          iVar9 = -0x7ffffffb;
-          *(undefined4 *)((longlong)plVar6 + 4) = 0x24;
+          _Dst[6] = 0x1200018;
+          iVar8 = -0x7ffffffb;
+          _Dst[1] = 0x24;
           *(undefined8 *)(param_2 + 0x38) = 0x24;
         }
         else {
-          *(undefined4 *)(plVar6 + 4) = 0x1200018;
-          *(undefined4 *)((longlong)plVar6 + 0x24) = 2;
-          *(undefined4 *)(plVar6 + 5) = *(undefined4 *)(param_1 + 0x1304);
-          *(undefined4 *)((longlong)plVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x1300);
-          memcpy(plVar6 + 6,*(void **)(param_1 + 0x1308),
+          _Dst[8] = 0x1200018;
+          _Dst[9] = 2;
+          _Dst[10] = *(int *)(param_1 + 0x1304);
+          _Dst[0xb] = *(int *)(param_1 + 0x1300);
+          memcpy(_Dst + 0xc,*(void **)(param_1 + 0x1308),
                  (ulonglong)*(uint *)(param_1 + 0x1304) * 0x30);
-          *(undefined4 *)(plVar6 + 0x240006) = *(undefined4 *)(param_1 + 0x15c8);
-          *(undefined4 *)((longlong)plVar6 + 0x1200034) = *(undefined4 *)(param_1 + 0x15cc);
-          *(undefined4 *)(plVar6 + 3) = 0x1200018;
-          *(undefined4 *)((longlong)plVar6 + 4) = 0x1200038;
+          _Dst[0x48000c] = *(int *)(param_1 + 0x15c8);
+          _Dst[0x48000d] = *(int *)(param_1 + 0x15cc);
+          _Dst[6] = 0x1200018;
+          _Dst[1] = 0x1200038;
           *(undefined8 *)(param_2 + 0x38) = 0x1200038;
         }
-        goto LAB_1;
+        goto LAB_0;
       }
       if (1 < iVar3 - 2U) {
-        iVar9 = -0x3fffff45;
-        goto LAB_1;
-      }
-      piVar10 = FUN_1c0056374(*(longlong *)(param_1 + 8),param_2,uVar2,&local_res20,local_res10);
-      iVar9 = (int)piVar10;
-      puVar17 = local_res20;
-      if (-1 < iVar9) {
+        iVar8 = -0x3fffff45;
+        goto LAB_0;
+      }
+      piVar10 = RaBuildDiagnosticBufferForMiniport
+                          (*(longlong *)(param_1 + 8),param_2,uVar2,&local_res20,local_res10);
+      iVar8 = (int)piVar10;
+      puVar16 = local_res20;
+      if (-1 < iVar8) {
         uVar13 = 2;
-        puVar11 = FUN_1c00079e4(*(longlong *)(param_1 + 8),2,*(char *)(param_1 + 0x1ba),0);
+        puVar11 = RaidAllocateSrb(*(longlong *)(param_1 + 8),2,*(char *)(param_1 + 0x1ba),0);
         if ((puVar11 == (undefined2 *)0x0) ||
-           (lVar12 = FUN_1c000826c((*(int *)(param_1 + 0x1e4) + 7U & 0xfffffff8) + 0x450,uVar13,
-                                   param_1), lVar12 == 0)) {
-          iVar9 = -0x3fffff66;
-          puVar17 = local_res20;
+           (lVar12 = StorAllocateContiguousIoResources
+                               ((*(int *)(param_1 + 0x1e4) + 7U & 0xfffffff8) + 0x450,uVar13,param_1
+                               ), lVar12 == 0)) {
+          iVar8 = -0x3fffff66;
+          puVar16 = local_res20;
         }
         else {
           puVar1 = (undefined4 *)(lVar12 + 0x30);
-          puVar16 = (undefined4 *)0x0;
-          FUN_1c0004aa4(puVar1,uVar13,0,(longlong *)0x0);
-          puVar17 = local_res20;
+          puVar15 = (undefined4 *)0x0;
+          RaidZeroXrb(puVar1,uVar13,0,(void *)0x0);
+          puVar16 = local_res20;
           *(uint **)(lVar12 + 0xe8) = local_res20;
           *(longlong *)(lVar12 + 0xe0) = param_2;
           *(undefined2 **)(lVar12 + 0xd8) = puVar11;
           if (*(char *)(param_1 + 0x1ba) == '\x01') {
             *(int *)(puVar11 + 0x1e) = local_res10[0];
             *(undefined4 **)(puVar11 + 0x30) = puVar1;
             *(longlong *)(puVar11 + 0x28) = param_2;
             *(undefined4 *)(puVar11 + 10) = 2;
             *(uint **)(puVar11 + 0x20) = local_res20;
             *(undefined4 *)(puVar11 + 0xc) = 0x100;
             *(undefined4 *)(puVar11 + 0x14) = *(undefined4 *)(param_1 + 0xfdc);
             uVar2 = *(uint *)(puVar11 + 0x1a);
             *(undefined2 *)((ulonglong)uVar2 + 8 + (longlong)puVar11) = 0;
             *(undefined1 *)((ulonglong)uVar2 + 10 + (longlong)puVar11) = 0;
           }
           else {
             *(int *)(puVar11 + 8) = local_res10[0];
             *puVar11 = 0x58;
             *(undefined4 **)(puVar11 + 0x18) = puVar1;
             *(undefined1 *)(puVar11 + 1) = 2;
             *(uint **)(puVar11 + 0xc) = local_res20;
             *(undefined4 *)(puVar11 + 6) = 0x100;
             uVar4 = *(undefined4 *)(param_1 + 0xfdc);
             *(undefined2 *)((longlong)puVar11 + 5) = 0;
             *(undefined4 *)(puVar11 + 10) = uVar4;
             *(undefined1 *)((longlong)puVar11 + 7) = 0;
           }
-          FUN_1c0008664(param_1,(longlong)puVar11,lVar12 + 0x450);
-          puVar15 = (undefined *)0x0;
+          RaSrbSetMiniportContext(param_1,(longlong)puVar11,lVar12 + 0x450);
+          puVar14 = (undefined *)0x0;
           KeInitializeEvent(lVar12 + 0x2c8,0);
-          FUN_1c000f794((longlong)puVar1,FUN_1c000f720);
-          if (*(int *)((longlong)plVar6 + 0xc) == 2) {
+          RaidXrbSetCompletionRoutine((longlong)puVar1,RaidXrbSignalCompletion);
+          if (_Dst[3] == 2) {
             *(byte *)(lVar12 + 0x41) = *(byte *)(lVar12 + 0x41) | 8;
           }
-          if ((*(int *)((longlong)plVar6 + 0xc) == 3) && (*(longlong *)(param_1 + 0x1320) != 0)) {
-            puVar15 = (undefined *)0x1;
-            FUN_1c00089e4(param_1,0,1);
-          }
-          if ((((undefined **)PTR_LOOP_1c0092070 != &PTR_LOOP_1c0092070) &&
-              ((*(uint *)(PTR_LOOP_1c0092070 + 0x2c) & 0x100) != 0)) &&
-             (PTR_LOOP_1c0092070[0x29] != '\0')) {
-            puVar15 = &DAT_2;
-            puVar16 = puVar1;
-            FUN_1c003eaa4(*(undefined8 *)(PTR_LOOP_1c0092070 + 0x18),0x4d,&DAT_2,puVar1);
+          if ((_Dst[3] == 3) && (*(longlong *)(param_1 + 0x1320) != 0)) {
+            puVar14 = (undefined *)0x1;
+            RaidAdapterPoFxActivateComponent(param_1,0,1);
+          }
+          if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+              ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x100) != 0)) &&
+             (WPP_GLOBAL_Control[0x29] != '\0')) {
+            puVar14 = &WPP_df086f30ac4133b41ee0b0bc6bc9ca18_Traceguids;
+            puVar15 = puVar1;
+            WPP_SF_qq(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x4d,
+                      &WPP_df086f30ac4133b41ee0b0bc6bc9ca18_Traceguids,puVar1);
           }
           if (*(char *)(param_1 + 0x10d2) == '\0') {
-            iVar9 = FUN_1c0008c08(param_1,(longlong)puVar1,puVar15,puVar16);
+            iVar8 = RaidAdapterExecuteXrb(param_1,(longlong)puVar1,puVar14,puVar15);
           }
           else {
-            iVar9 = FUN_1c0008bac(param_1,(longlong)puVar1,puVar15,puVar16);
-          }
-          if (-1 < iVar9) {
+            iVar8 = RaidAdapterRaiseIrqlAndExecuteXrb(param_1,(longlong)puVar1,puVar14,puVar15);
+          }
+          if (-1 < iVar8) {
             KeWaitForSingleObject(lVar12 + 0x2c8,0,0,0,0);
-            uVar13 = FUN_1c00083b8(*(byte *)((longlong)puVar11 + 3));
-            iVar9 = (int)uVar13;
-          }
-          if (*(int *)((longlong)plVar6 + 0xc) == 3) {
+            uVar13 = RaidSrbStatusToNtStatus(*(byte *)((longlong)puVar11 + 3));
+            iVar8 = (int)uVar13;
+          }
+          if (_Dst[3] == 3) {
             if ((*(byte *)(lVar12 + 0x41) & 1) != 0) {
-              FUN_1c0036af8(param_1);
+              RaidAdapterPoFxIdleComponentFromMiniport(param_1);
               *(byte *)(lVar12 + 0x41) = *(byte *)(lVar12 + 0x41) & 0xfe;
             }
             if (*(longlong *)(param_1 + 0x1320) != 0) {
-              FUN_1c00089a8(param_1);
-            }
-          }
-          if (iVar9 < 0) {
-            uVar14 = 0;
-LAB_3:
-            *(ulonglong *)(param_2 + 0x38) = uVar14;
-            if ((((undefined **)PTR_LOOP_1c0092070 != &PTR_LOOP_1c0092070) &&
-                ((*(uint *)(PTR_LOOP_1c0092070 + 0x2c) & 0x100) != 0)) &&
-               (PTR_LOOP_1c0092070[0x29] != '\0')) {
-              FUN_1c003e890(*(undefined8 *)(PTR_LOOP_1c0092070 + 0x18),0x4e,&DAT_2,iVar9);
+              RaidAdapterPoFxIdleComponent(param_1);
+            }
+          }
+          if (iVar8 < 0) {
+            uVar9 = 0;
+LAB_2:
+            *(ulonglong *)(param_2 + 0x38) = uVar9;
+            if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+                ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x100) != 0)) &&
+               (WPP_GLOBAL_Control[0x29] != '\0')) {
+              WPP_SF_dd(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x4e,
+                        &WPP_df086f30ac4133b41ee0b0bc6bc9ca18_Traceguids,iVar8);
             }
           }
           else {
-            uVar2 = *puVar17;
-            FUN_1c0023980(plVar6,0,(undefined1 *)(ulonglong)local_res18);
-            uVar5 = puVar17[5];
+            uVar2 = *puVar16;
+            memset(_Dst,0,(ulonglong)local_res18);
+            uVar5 = puVar16[5];
             if (uVar5 == 6) {
-              *(undefined4 *)plVar6 = 0x24;
-              iVar9 = -0x7ffffffb;
-              *(undefined4 *)(plVar6 + 3) =
-                   *(undefined4 *)((longlong)puVar17 + (ulonglong)uVar2 + 0x20);
-              lVar7 = *(longlong *)((longlong)puVar17 + (ulonglong)uVar2 + 0x10);
-              lVar8 = *(longlong *)((longlong)puVar17 + (ulonglong)uVar2 + 0x18);
-              *(undefined4 *)((longlong)plVar6 + 4) = 0x24;
-              plVar6[1] = lVar7;
-              plVar6[2] = lVar8;
+              *_Dst = 0x24;
+              iVar8 = -0x7ffffffb;
+              _Dst[6] = *(int *)((longlong)puVar16 + (ulonglong)uVar2 + 0x20);
+              uVar13 = *(undefined8 *)((longlong)puVar16 + (ulonglong)uVar2 + 0x10);
+              uVar6 = *(undefined8 *)((longlong)puVar16 + (ulonglong)uVar2 + 0x18);
+              _Dst[1] = 0x24;
+              *(undefined8 *)(_Dst + 2) = uVar13;
+              *(undefined8 *)(_Dst + 4) = uVar6;
               *(undefined8 *)(param_2 + 0x38) = 0x24;
             }
             else {
               if (uVar5 == 0) {
-                *(undefined4 *)plVar6 = 0x24;
-                uVar5 = *(uint *)((longlong)puVar17 + (ulonglong)uVar2 + 0x20);
+                *_Dst = 0x24;
+                uVar5 = *(uint *)((longlong)puVar16 + (ulonglong)uVar2 + 0x20);
                 if (local_res18 - 0x20 <= uVar5) {
                   uVar5 = local_res18 - 0x20;
                 }
-                *(uint *)((longlong)plVar6 + 4) = uVar5 + 0x20;
-                *(uint *)(plVar6 + 3) = uVar5;
-                lVar7 = *(longlong *)((longlong)puVar17 + (ulonglong)uVar2 + 0x18);
-                plVar6[1] = *(longlong *)((longlong)puVar17 + (ulonglong)uVar2 + 0x10);
-                plVar6[2] = lVar7;
-                memcpy(plVar6 + 4,(void *)((longlong)puVar17 + (ulonglong)uVar2 + 0x28),
+                _Dst[1] = uVar5 + 0x20;
+                _Dst[6] = uVar5;
+                uVar13 = *(undefined8 *)((longlong)puVar16 + (ulonglong)uVar2 + 0x18);
+                *(undefined8 *)(_Dst + 2) =
+                     *(undefined8 *)((longlong)puVar16 + (ulonglong)uVar2 + 0x10);
+                *(undefined8 *)(_Dst + 4) = uVar13;
+                memcpy(_Dst + 8,(void *)((longlong)puVar16 + (ulonglong)uVar2 + 0x28),
                        (ulonglong)uVar5);
-                uVar14 = (ulonglong)*(uint *)((longlong)plVar6 + 4);
-                goto LAB_3;
+                uVar9 = (ulonglong)(uint)_Dst[1];
+                goto LAB_2;
               }
-              uVar13 = FUN_1c003b008(uVar5);
+              uVar13 = RaidDiagnosticIoctlStatusToNtStatus(uVar5);
               *(undefined8 *)(param_2 + 0x38) = 0;
-              iVar9 = (int)uVar13;
-            }
-          }
-          FUN_1c0008a38((longlong)puVar1,0);
-          FUN_1c000832c(param_1,lVar12);
-        }
-      }
-LAB_0:
-      if (puVar17 != (uint *)0x0) {
-        ExFreePoolWithTag(puVar17);
+              iVar8 = (int)uVar13;
+            }
+          }
+          RaidXrbDeallocateResources((longlong)puVar1,0);
+          StorFreeContiguousIoResources(param_1,lVar12);
+        }
+      }
+LAB_1:
+      if (puVar16 != (uint *)0x0) {
+        ExFreePoolWithTag(puVar16);
       }
       if (puVar11 != (undefined2 *)0x0) {
         if (*(char *)(param_1 + 0x1ba) == '\x01') {
           *(undefined8 *)(puVar11 + 0x28) = 0;
           *(undefined8 *)(puVar11 + 0x34) = 0;
         }
         else {
           *(undefined8 *)(puVar11 + 0x18) = 0;
           *(undefined8 *)(puVar11 + 0x1c) = 0;
         }
-        FUN_1c0019dd4(puVar11);
-      }
-      goto LAB_1;
+        RaidFreeSrb(puVar11);
+      }
+      goto LAB_0;
     }
   }
-  iVar9 = -0x3ffffff3;
-LAB_1:
-  FUN_1c0003280(param_2,0,iVar9);
+  iVar8 = -0x3ffffff3;
+LAB_0:
+  RaidCompleteRequestEx(param_2,0,iVar8);
   return;
 }
 

```


# Modified (No Code Changes)


*Slightly modified functions have no code changes, rather differnces in:*
- refcount
- length
- called
- calling
- name
- fullname

## NTOSKRNL.EXE::SeUnlockSubjectContext

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|name|SeUnlockSubjectContext|SeUnlockSubjectContext|
|fullname|NTOSKRNL.EXE::SeUnlockSubjectContext|NTOSKRNL.EXE::SeUnlockSubjectContext|
|`refcount`|2|3|
|length|0|0|
|called|||
|`calling`|FUN_1c00b028c|PortAllowIrpFromPdoToFdo<br>RaidCallerIsAdmin|
|paramcount|0|0|
|`address`|EXTERNAL:00000123|EXTERNAL:000000ec|
|sig|undefined SeUnlockSubjectContext(void)|undefined SeUnlockSubjectContext(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::SeUnlockSubjectContext Calling Diff


```diff
--- NTOSKRNL.EXE::SeUnlockSubjectContext calling
+++ NTOSKRNL.EXE::SeUnlockSubjectContext calling
@@ -1 +1,2 @@
-FUN_1c00b028c
+PortAllowIrpFromPdoToFdo
+RaidCallerIsAdmin
```


## NTOSKRNL.EXE::SeCaptureSubjectContext

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|name|SeCaptureSubjectContext|SeCaptureSubjectContext|
|fullname|NTOSKRNL.EXE::SeCaptureSubjectContext|NTOSKRNL.EXE::SeCaptureSubjectContext|
|`refcount`|2|3|
|length|0|0|
|called|||
|`calling`|FUN_1c00b028c|PortAllowIrpFromPdoToFdo<br>RaidCallerIsAdmin|
|paramcount|0|0|
|`address`|EXTERNAL:0000011f|EXTERNAL:000000f1|
|sig|undefined SeCaptureSubjectContext(void)|undefined SeCaptureSubjectContext(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::SeCaptureSubjectContext Calling Diff


```diff
--- NTOSKRNL.EXE::SeCaptureSubjectContext calling
+++ NTOSKRNL.EXE::SeCaptureSubjectContext calling
@@ -1 +1,2 @@
-FUN_1c00b028c
+PortAllowIrpFromPdoToFdo
+RaidCallerIsAdmin
```


## NTOSKRNL.EXE::SeReleaseSubjectContext

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|name|SeReleaseSubjectContext|SeReleaseSubjectContext|
|fullname|NTOSKRNL.EXE::SeReleaseSubjectContext|NTOSKRNL.EXE::SeReleaseSubjectContext|
|`refcount`|2|3|
|length|0|0|
|called|||
|`calling`|FUN_1c00b028c|PortAllowIrpFromPdoToFdo<br>RaidCallerIsAdmin|
|paramcount|0|0|
|`address`|EXTERNAL:00000124|EXTERNAL:000000eb|
|sig|undefined SeReleaseSubjectContext(void)|undefined SeReleaseSubjectContext(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::SeReleaseSubjectContext Calling Diff


```diff
--- NTOSKRNL.EXE::SeReleaseSubjectContext calling
+++ NTOSKRNL.EXE::SeReleaseSubjectContext calling
@@ -1 +1,2 @@
-FUN_1c00b028c
+PortAllowIrpFromPdoToFdo
+RaidCallerIsAdmin
```


## NTOSKRNL.EXE::SeLockSubjectContext

### Match Info



|Key|storport-2025-05.sys - storport-2025-06.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|storport-2025-05.sys|storport-2025-06.sys|
| :---: | :---: | :---: |
|name|SeLockSubjectContext|SeLockSubjectContext|
|fullname|NTOSKRNL.EXE::SeLockSubjectContext|NTOSKRNL.EXE::SeLockSubjectContext|
|`refcount`|2|3|
|length|0|0|
|called|||
|`calling`|FUN_1c00b028c|PortAllowIrpFromPdoToFdo<br>RaidCallerIsAdmin|
|paramcount|0|0|
|`address`|EXTERNAL:00000120|EXTERNAL:000000ee|
|sig|undefined SeLockSubjectContext(void)|undefined SeLockSubjectContext(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::SeLockSubjectContext Calling Diff


```diff
--- NTOSKRNL.EXE::SeLockSubjectContext calling
+++ NTOSKRNL.EXE::SeLockSubjectContext calling
@@ -1 +1,2 @@
-FUN_1c00b028c
+PortAllowIrpFromPdoToFdo
+RaidCallerIsAdmin
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-09-08T23:18:28</sub>