# ssdpsrv-09.dll-ssdpsrv-10.dll 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)
* [Added](#added)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_3942159674getcachedfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_3942159674getcurrentfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage](#wildetailsfeatureimpl__wilfeaturetraits_feature_3942159674reportusage)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled](#wildetailsfeatureimpl__wilfeaturetraits_feature_3942159674__private_isenabled)
* [Modified](#modified)
	* [_RemoveSyncHandle](#_removesynchandle)
	* [_WakeupGetNotificationRpc](#_wakeupgetnotificationrpc)
	* [CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList](#cssdpnotifyrequestmanagerhrremovenotifysemaphorefromlist)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive](#api-ms-win-core-synch-l1-1-0dllacquiresrwlockexclusive)
	* [~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>](#unique_storagewildetailsresource_policy_rtl_srwlock___ptr64void___cdecl_rtl_srwlock___ptr64void___cdecl_releasesrwlockexclusivestruct__rtl_srwlock___ptr64wistdintegral_constantunsigned___int641_rtl_srwlock___ptr64_rtl_srwlock___ptr640stdnullptr_t_)
	* [push_back](#push_back)
	* [WilApi_GetFeatureEnabledState](#wilapi_getfeatureenabledstate)
	* [ReportUsageToService](#reportusagetoservice)
	* [WPP_SF_qd](#wpp_sf_qd)
	* [EnsureSubscribedToFeatureConfigurationChanges](#ensuresubscribedtofeatureconfigurationchanges)
	* [API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError](#api-ms-win-core-errorhandling-l1-1-0dllgetlasterror)
	* [API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore](#api-ms-win-core-synch-l1-1-0dllreleasesemaphore)

# Visual Chart Diff



```mermaid

flowchart LR

_RemoveSyncHandle-1-old<--Match 99%-->_RemoveSyncHandle-1-new
_WakeupGetNotificationRpc-1-old<--Match 92%-->_WakeupGetNotificationRpc-1-new
CSsdpNotifyRequestManagerHrRemoveNotifySemaphoreFromList-3-old<--Match 63%-->CSsdpNotifyRequestManagerHrOperateNotifySemaphoreFromList-3-new

subgraph ssdpsrv-10.dll
    _RemoveSyncHandle-1-new
_WakeupGetNotificationRpc-1-new
CSsdpNotifyRequestManagerHrOperateNotifySemaphoreFromList-3-new
    subgraph Added
direction LR
wil-details-FeatureImpl__WilFeatureTraits_Feature_3942159674-GetCachedFeatureEnabledState
    wil-details-FeatureImpl__WilFeatureTraits_Feature_3942159674-GetCurrentFeatureEnabledState
    wil-details-FeatureImpl__WilFeatureTraits_Feature_3942159674-ReportUsage
    wil-details-FeatureImpl__WilFeatureTraits_Feature_3942159674-__private_IsEnabled
end
end

subgraph ssdpsrv-09.dll
    _RemoveSyncHandle-1-old
_WakeupGetNotificationRpc-1-old
CSsdpNotifyRequestManagerHrRemoveNotifySemaphoreFromList-3-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.8456%
"unmatched_funcs_len" : 4
"matched_funcs_len" : 2586
```



```mermaid
pie showData
    title Matched Function Similarity - 99.5360%
"matched_funcs_with_code_changes_len" : 3
"matched_funcs_with_non_code_changes_len" : 9
"matched_funcs_no_changes_len" : 2574
```

# 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 ssdpsrv-09.dll ssdpsrv-10.dll
```


#### Verbose Args


<details>

```
--old ['ssdpsrv-09.dll'] --new [['ssdpsrv-10.dll']] --engine VersionTrackingDiff --output-path out --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/ssdpsrv.dll/613AD2FF51000/ssdpsrv.dll -O ssdpsrv.dll.x64.10.0.26100.6725
wget https://msdl.microsoft.com/download/symbols/ssdpsrv.dll/4947B62651000/ssdpsrv.dll -O ssdpsrv.dll.x64.10.0.26100.6899
```


## Binary Metadata Diff


```diff
--- ssdpsrv-09.dll Meta
+++ ssdpsrv-10.dll Meta
@@ -1,44 +1,44 @@
-Program Name: ssdpsrv-09.dll
+Program Name: ssdpsrv-10.dll
 Language ID: x86:LE:64:default (4.7)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 180000000
 Maximum Address: ff0000184f
 # of Bytes: 337904
 # of Memory Blocks: 10
-# of Instructions: 57208
-# of Defined Data: 4080
-# of Functions: 1293
-# of Symbols: 9375
-# of Data Types: 879
+# of Instructions: 57471
+# of Defined Data: 4085
+# of Functions: 1297
+# of Symbols: 9412
+# of Data Types: 882
 # of Data Type Categories: 62
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.1.2
-Date Created: Thu Aug 27 23:44:28 SGT 2026
+Date Created: Thu Aug 27 23:44:32 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /C:/Users/Jacob/Downloads/pdbs/ssdpsrv-09.dll
-Executable MD5: 6ff877a025e8473c644aeda6c869b1a4
-Executable SHA256: decdc8645224a2d8e1a5db81f41dd863afc300773baeee421efb2901272e0da6
-FSRL: file:///C:/Users/Jacob/Downloads/pdbs/ssdpsrv-09.dll?MD5=6ff877a025e8473c644aeda6c869b1a4
+Executable Location: /C:/Users/Jacob/Downloads/pdbs/ssdpsrv-10.dll
+Executable MD5: 4ffccdba90ec86f6fb1cb7a33a55282d
+Executable SHA256: 5c00752391f61c52a392e41c249fe632d58401ab4e298453ff8c1b3ce9ee43f4
+FSRL: file:///C:/Users/Jacob/Downloads/pdbs/ssdpsrv-10.dll?MD5=4ffccdba90ec86f6fb1cb7a33a55282d
 PDB Age: 1
 PDB File: ssdpsrv.pdb
-PDB GUID: b86e279c-10f3-95c6-9e45-1c5132dd9242
+PDB GUID: 66382634-25ad-95dc-7fc0-23ceab7b1b02
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: SSDP Service DLL
-PE Property[FileVersion]: 10.0.26100.6725 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.6899 (WinBuild.160101.0800)
 PE Property[InternalName]: ssdpsrv.dll
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: ssdpsrv.dll
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.6725
+PE Property[ProductVersion]: 10.0.26100.6899
 PE Property[Translation]: 4b00409
 Preferred Root Namespace Category: 
 RTTI Found: false
 Relocatable: true
 SectionAlignment: 4096
 Should Ask To Analyze: false

```


## Program Options


<details>
<summary>Ghidra ssdpsrv-09.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra ssdpsrv-09.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra ssdpsrv-09.dll 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 ssdpsrv-10.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra ssdpsrv-10.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra ssdpsrv-10.dll Analyzers Options</summary>


|Analyzers Option|Value|
| :---: | :---: |
|ASCII Strings|true|
|ASCII Strings.Create Strings Containing Existing Strings|true|
|ASCII Strings.Create Strings Containing References|true|
|ASCII Strings.Force Model Reload|false|
|ASCII Strings.Minimum String Length|LEN_5|
|ASCII Strings.Model File|StringModel.sng|
|ASCII Strings.Require Null Termination for String|true|
|ASCII Strings.Search Only in Accessible Memory Blocks|true|
|ASCII Strings.String Start Alignment|ALIGN_1|
|ASCII Strings.String end alignment|4|
|Aggressive Instruction Finder|false|
|Aggressive Instruction Finder.Create Analysis Bookmarks|true|
|Apply Data Archives|true|
|Apply Data Archives.Archive Chooser|[Auto-Detect]|
|Apply Data Archives.Create Analysis Bookmarks|true|
|Apply Data Archives.GDT User File Archive Path|None|
|Apply Data Archives.User Project Archive Path|None|
|Call Convention ID|true|
|Call Convention ID.Analysis Decompiler Timeout (sec)|60|
|Call-Fixup Installer|true|
|Condense Filler Bytes|false|
|Condense Filler Bytes.Filler Value|Auto|
|Condense Filler Bytes.Minimum number of sequential bytes|1|
|Create Address Tables|true|
|Create Address Tables.Allow Offcut References|false|
|Create Address Tables.Auto Label Table|false|
|Create Address Tables.Create Analysis Bookmarks|true|
|Create Address Tables.Maxmimum Pointer Distance|16777215|
|Create Address Tables.Minimum Pointer Address|4132|
|Create Address Tables.Minimum Table Size|2|
|Create Address Tables.Pointer Alignment|1|
|Create Address Tables.Relocation Table Guide|true|
|Create Address Tables.Table Alignment|4|
|Data Reference|true|
|Data Reference.Address Table Alignment|1|
|Data Reference.Address Table Minimum Size|2|
|Data Reference.Align End of Strings|false|
|Data Reference.Ascii String References|true|
|Data Reference.Create Address Tables|true|
|Data Reference.Minimum String Length|5|
|Data Reference.References to Pointers|true|
|Data Reference.Relocation Table Guide|true|
|Data Reference.Respect Execute Flag|true|
|Data Reference.Subroutine References|true|
|Data Reference.Switch Table References|false|
|Data Reference.Unicode String References|true|
|Decompiler Parameter ID|true|
|Decompiler Parameter ID.Analysis Clear Level|ANALYSIS|
|Decompiler Parameter ID.Analysis Decompiler Timeout (sec)|60|
|Decompiler Parameter ID.Commit Data Types|true|
|Decompiler Parameter ID.Commit Void Return Values|false|
|Decompiler Parameter ID.Prototype Evaluation|__fastcall|
|Decompiler Switch Analysis|true|
|Decompiler Switch Analysis.Analysis Decompiler Timeout (sec)|60|
|Demangler Microsoft|true|
|Demangler Microsoft.msdApplyOptions|{
	interpretation: FUNCTION_IF_EXISTS,
	applyCallingConvention: true,
	applySignature: true,
	demangleOnlyKnownPatterns: true,
	doDisassembly: true
}|
|Demangler Microsoft.msdOutputOptions|ghidra.app.util.demangler.microsoft.options.MsdOutputOption@9e5b|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>

## Diff Stats



|Stat|Value|
| :---: | :---: |
|added_funcs_len|4|
|deleted_funcs_len|0|
|modified_funcs_len|12|
|added_symbols_len|2|
|deleted_symbols_len|2|
|diff_time|14.51798677444458|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 1287, 'ExternalsName': 222, 'ExactInstructionsFunctionHasher': 2, 'SigCallingCalledHasher': 2, 'Implied Match': 1})|
|items_to_process|20|
|diff_types|Counter({'refcount': 10, 'calling': 10, 'address': 8, 'code': 3, 'length': 3, 'called': 3, 'name': 1, 'fullname': 1, 'sig': 1})|
|unmatched_funcs_len|4|
|total_funcs_len|2590|
|matched_funcs_len|2586|
|matched_funcs_with_code_changes_len|3|
|matched_funcs_with_non_code_changes_len|9|
|matched_funcs_no_changes_len|2574|
|match_func_similarity_percent|99.5360%|
|func_match_overall_percent|99.8456%|
|first_matches|Counter({'SymbolsHash': 1287, 'ExactInstructionsFunctionHasher': 2, 'SigCallingCalledHasher': 2, 'Implied Match': 1})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 1287
"ExternalsName" : 222
"ExactInstructionsFunctionHasher" : 2
"SigCallingCalledHasher" : 2
"Implied-Match" : 1
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 1287
"ExactInstructionsFunctionHasher" : 2
"SigCallingCalledHasher" : 2
"Implied-Match" : 1
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 4
"deleted_funcs_len" : 0
"modified_funcs_len" : 12
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 2
"deleted_symbols_len" : 2
```

## Strings


*No string differences found*

# Deleted

# Added

## wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState

### Function Meta



|Key|ssdpsrv-10.dll|
| :---: | :---: |
|name|GetCachedFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState|
|refcount|3|
|length|293|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive<br>wil::details::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState<br>wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_><br>wil::details_abi::heap_buffer::push_back|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled|
|paramcount|1|
|address|18002c540|
|sig|wil_details_FeatureStateCache __thiscall GetCachedFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_3942159674> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState
@@ -0,0 +1,82 @@
+
+/* WARNING: Removing unreachable block (ram,0x00018002c592) */
+/* WARNING: Removing unreachable block (ram,0x00018002c598) */
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState(void) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_3942159674> *this)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  FeatureImpl<__WilFeatureTraits_Feature_3942159674> *this_00;
+  uint uVar4;
+  uint *in_RDX;
+  bool bVar5;
+  uint local_res10 [2];
+  undefined *local_res18 [2];
+  undefined4 local_38;
+  undefined4 local_34;
+  FeatureImpl<__WilFeatureTraits_Feature_3942159674> *local_30;
+  
+  in_RDX[0] = 0;
+  in_RDX[1] = 0;
+  uVar3 = *(uint *)this;
+  *in_RDX = uVar3;
+  if (((byte)uVar3 & 6) == 6) {
+    return;
+  }
+  this_00 = this;
+  uVar2 = EnsureSubscribedToFeatureConfigurationChanges();
+  GetCurrentFeatureEnabledState(this_00,(int *)local_res10);
+  uVar3 = *in_RDX;
+  do {
+    uVar1 = uVar3;
+    *in_RDX = uVar1;
+    uVar4 = uVar1;
+    if ((uVar1 & 4) == 0) {
+      uVar4 = uVar1 & 0xfffffbff | local_res10[0] & 0x400 | 4;
+      *in_RDX = uVar4;
+    }
+    LOCK();
+    uVar3 = *(uint *)this;
+    bVar5 = uVar1 == uVar3;
+    if (bVar5) {
+      *(uint *)this = uVar4;
+      uVar3 = uVar1;
+    }
+    UNLOCK();
+  } while (!bVar5);
+  if (((uVar1 & 4) != 0) ||
+     (g_enabledStateManager == (shutdown_aware_object<wil::details::EnabledStateManager>)0x0))
+  goto LAB_18002c63e;
+  AcquireSRWLockExclusive((PSRWLOCK)&DAT_180048380);
+  local_res18[0] = &DAT_180048380;
+  if ((uVar2 == 0) || (uVar2 != DAT_180048394)) {
+LAB_18002c631:
+    LOCK();
+    *(uint *)this = *(uint *)this & 0xfffffffb;
+    UNLOCK();
+  }
+  else {
+    local_34 = 0;
+    local_38 = 3;
+    local_30 = this;
+    bVar5 = details_abi::heap_buffer::push_back((heap_buffer *)&DAT_1800483c8,&local_38,0x10);
+    if (!bVar5) goto LAB_18002c631;
+  }
+  unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+  ::
+  ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+            ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+              *)local_res18);
+LAB_18002c63e:
+  if ((*in_RDX & 2) == 0) {
+    *in_RDX = *in_RDX & 0xfffff63e | local_res10[0] & 0x9c1;
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState

### Function Meta



|Key|ssdpsrv-10.dll|
| :---: | :---: |
|name|GetCurrentFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState|
|refcount|2|
|length|174|
|called|wil::details::WilApi_GetFeatureEnabledState|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState|
|paramcount|2|
|address|18002c8ac|
|sig|wil_details_FeatureStateCache __thiscall GetCurrentFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_3942159674> * this, int * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState
@@ -0,0 +1,44 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState(int * __ptr64) __ptr64 */
+
+int * __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_3942159674> *this,int *param_1)
+
+{
+  bool bVar1;
+  FEATURE_ENABLED_STATE FVar2;
+  uint uVar3;
+  uint uVar4;
+  uint uVar5;
+  uint uVar6;
+  int *in_R8;
+  
+  FVar2 = WilApi_GetFeatureEnabledState(0x379e0e4,(FEATURE_CHANGE_TIME)param_1,in_R8);
+  param_1[0] = 0;
+  param_1[1] = 0;
+  uVar5 = -(uint)((FVar2 & 0x40) != 0) & 0x800 | -(uint)((FVar2 & 0x80) != 0) & 0x400;
+  uVar6 = uVar5 | (FVar2 & 3) << 7;
+  *param_1 = uVar6;
+  if ((FVar2 & 0xffffff3f) == 0) {
+    uVar3 = 0x40;
+  }
+  else {
+    uVar3 = 0;
+    if ((FVar2 & 0xffffff3f) == 2) {
+      uVar3 = 0x40;
+    }
+  }
+  bVar1 = false;
+  uVar4 = 1;
+  if ((uVar5 == 0xc00) || (uVar3 != 0)) {
+    bVar1 = true;
+  }
+  if ((uVar3 == 0) || (!bVar1)) {
+    uVar4 = 0;
+  }
+  *param_1 = uVar6 | uVar3 | uVar4;
+  return param_1;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage

### Function Meta



|Key|ssdpsrv-10.dll|
| :---: | :---: |
|name|ReportUsage|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage|
|refcount|2|
|length|127|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState<br>wil::details::ReportUsageToService|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled|
|paramcount|4|
|address|18002ee00|
|sig|void __thiscall ReportUsage(FeatureImpl<__WilFeatureTraits_Feature_3942159674> * this, bool param_1, ReportingKind param_2, __uint64 param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage
@@ -0,0 +1,31 @@
+
+/* public: void __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_3942159674>::ReportUsage(bool,enum wil::ReportingKind,unsigned
+   __int64) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage
+          (FeatureImpl<__WilFeatureTraits_Feature_3942159674> *this,bool param_1,
+          ReportingKind param_2,__uint64 param_3)
+
+{
+  ulonglong *puVar1;
+  ulonglong uVar2;
+  undefined4 local_res8;
+  undefined2 local_resc;
+  __uint64 in_stack_ffffffffffffffe0;
+  
+  uVar2 = (ulonglong)*(uint *)this;
+  if ((*(uint *)this & 4) == 0) {
+    puVar1 = (ulonglong *)GetCachedFeatureEnabledState(this);
+    uVar2 = *puVar1;
+  }
+  local_res8 = 0;
+  local_resc = 2;
+  ReportUsageToService
+            ((wil_details_FeatureReportingCache *)(this + 8),0x379e0e4,(uint)uVar2 >> 10 & 1,
+             (uint)(uVar2 >> 0xb) & 1,(FEATURE_LOGGED_TRAITS *)&local_res8,(uint)param_1,3,
+             in_stack_ffffffffffffffe0);
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled

### Function Meta



|Key|ssdpsrv-10.dll|
| :---: | :---: |
|name|__private_IsEnabled|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled|
|refcount|3|
|length|53|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage|
|calling|CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList<br>_WakeupGetNotificationRpc|
|paramcount|1|
|address|180030330|
|sig|bool __thiscall __private_IsEnabled(FeatureImpl<__WilFeatureTraits_Feature_3942159674> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled
@@ -0,0 +1,18 @@
+
+/* public: bool __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_3942159674>::__private_IsEnabled(void) __ptr64 */
+
+bool __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled
+          (FeatureImpl<__WilFeatureTraits_Feature_3942159674> *this)
+
+{
+  ReportingKind in_R8D;
+  __uint64 in_R9;
+  undefined1 local_res10;
+  
+  GetCachedFeatureEnabledState(this);
+  ReportUsage(this,(bool)(local_res10 & 1),in_R8D,in_R9);
+  return (bool)(local_res10 & 1);
+}
+

```


# Modified


*Modified functions contain code changes*
## _RemoveSyncHandle

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|code,length,called|
|ratio|0.89|
|i_ratio|0.74|
|m_ratio|0.99|
|b_ratio|0.99|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|_RemoveSyncHandle|_RemoveSyncHandle|
|fullname|_RemoveSyncHandle|_RemoveSyncHandle|
|refcount|4|4|
|`length`|344|350|
|`called`|API-MS-WIN-CORE-HANDLE-L1-1-0.DLL::CloseHandle<br>CSsdpNotifyRequestManager::HrRemoveInternal<br>CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList<br>CSsdpNotifyRequestManager::IsNotifySemaphoreInList<br>WPP_SF_q<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::__private_IsEnabled|API-MS-WIN-CORE-HANDLE-L1-1-0.DLL::CloseHandle<br>CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList<br>CSsdpNotifyRequestManager::HrRemoveInternal<br>CSsdpNotifyRequestManager::IsNotifySemaphoreInList<br>WPP_SF_q<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::__private_IsEnabled|
|calling|PSYNC_HANDLE_TYPE_rundown|PSYNC_HANDLE_TYPE_rundown|
|paramcount|1|1|
|address|1800259b0|1800259b0|
|sig|undefined __fastcall _RemoveSyncHandle(undefined8 * param_1)|undefined __fastcall _RemoveSyncHandle(undefined8 * param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### _RemoveSyncHandle Called Diff


```diff
--- _RemoveSyncHandle called
+++ _RemoveSyncHandle called
@@ -1,0 +2 @@
+CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
@@ -3 +3,0 @@
-CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList
```


### _RemoveSyncHandle Diff


```diff
--- _RemoveSyncHandle
+++ _RemoveSyncHandle
@@ -1,55 +1,54 @@
 
 void _RemoveSyncHandle(undefined8 *param_1)
 
 {
   void *pvVar1;
   bool bVar2;
   int iVar3;
   
   if (param_1 != (undefined8 *)0x0) {
     bVar2 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::__private_IsEnabled
                       ((FeatureImpl<__WilFeatureTraits_Feature_1126232377> *)
                        &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_1126232377>::GetImpl(void)'
                         ::__l2::impl);
     if (bVar2) {
       pvVar1 = (void *)*param_1;
       if ((pvVar1 == (void *)0x0) ||
          (iVar3 = CSsdpNotifyRequestManager::IsNotifySemaphoreInList
                             (&CSsdpNotifyRequestManager::s_instance,1,pvVar1), iVar3 == 0)) {
         if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
           return;
         }
         if ((WPP_GLOBAL_Control[0x1c] & 8) == 0) {
           return;
         }
         WPP_SF_q(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x15,
-                 &WPP_24331e58c2c93edee074a803aaed6588_Traceguids,pvVar1);
+                 &WPP_7f2d2c9fee48373b394f7587accbfb4d_Traceguids,pvVar1);
         return;
       }
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((WPP_GLOBAL_Control[0x1c] & 8) != 0)) {
         WPP_SF_q(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x16,
-                 &WPP_24331e58c2c93edee074a803aaed6588_Traceguids,pvVar1);
+                 &WPP_7f2d2c9fee48373b394f7587accbfb4d_Traceguids,pvVar1);
       }
-      iVar3 = 0;
       CSsdpNotifyRequestManager::HrRemoveInternal
                 (&CSsdpNotifyRequestManager::s_instance,0,0,pvVar1,(CSsdpNotifyRequest *)0x0);
-      CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList
-                (&CSsdpNotifyRequestManager::s_instance,pvVar1,iVar3);
+      CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
+                (&CSsdpNotifyRequestManager::s_instance,pvVar1,2);
     }
     else {
       pvVar1 = (void *)*param_1;
       CSsdpNotifyRequestManager::HrRemoveInternal
                 (&CSsdpNotifyRequestManager::s_instance,0,0,pvVar1,(CSsdpNotifyRequest *)0x0);
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((WPP_GLOBAL_Control[0x1c] & 8) != 0)) {
         WPP_SF_q(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x17,
-                 &WPP_24331e58c2c93edee074a803aaed6588_Traceguids,pvVar1);
+                 &WPP_7f2d2c9fee48373b394f7587accbfb4d_Traceguids,pvVar1);
       }
       CloseHandle(pvVar1);
     }
     *param_1 = 0;
   }
   return;
 }
 

```


## _WakeupGetNotificationRpc

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.71|
|i_ratio|0.63|
|m_ratio|0.94|
|b_ratio|0.92|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|_WakeupGetNotificationRpc|_WakeupGetNotificationRpc|
|fullname|_WakeupGetNotificationRpc|_WakeupGetNotificationRpc|
|refcount|3|3|
|`length`|306|348|
|`called`|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore<br>CSsdpNotifyRequestManager::IsNotifySemaphoreInList<br>WPP_SF_q<br>WPP_SF_qd<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::__private_IsEnabled|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore<br>CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList<br>CSsdpNotifyRequestManager::IsNotifySemaphoreInList<br>WPP_SF_q<br>WPP_SF_qd<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::__private_IsEnabled<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled|
|calling|||
|paramcount|1|1|
|`address`|180025b40|180025b50|
|sig|DWORD __fastcall _WakeupGetNotificationRpc(void * param_1)|DWORD __fastcall _WakeupGetNotificationRpc(void * param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### _WakeupGetNotificationRpc Called Diff


```diff
--- _WakeupGetNotificationRpc called
+++ _WakeupGetNotificationRpc called
@@ -2,0 +3 @@
+CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
@@ -6,0 +8 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled
```


### _WakeupGetNotificationRpc Diff


```diff
--- _WakeupGetNotificationRpc
+++ _WakeupGetNotificationRpc
@@ -1,48 +1,57 @@
 
 DWORD _WakeupGetNotificationRpc(void *param_1)
 
 {
   bool bVar1;
   int iVar2;
-  BOOL BVar3;
-  DWORD DVar4;
+  DWORD DVar3;
+  BOOL BVar4;
   long local_res10 [6];
   
-  local_res10[0] = 0;
   bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::__private_IsEnabled
                     ((FeatureImpl<__WilFeatureTraits_Feature_1126232377> *)
                      &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_1126232377>::GetImpl(void)'
                       ::__l2::impl);
   if (bVar1) {
     if ((param_1 != (void *)0x0) &&
        (iVar2 = CSsdpNotifyRequestManager::IsNotifySemaphoreInList
                           (&CSsdpNotifyRequestManager::s_instance,1,param_1), iVar2 != 0)) {
 LAB_0:
-      BVar3 = ReleaseSemaphore(param_1,1,local_res10);
-      if (BVar3 == 1) {
+      bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled
+                        ((FeatureImpl<__WilFeatureTraits_Feature_3942159674> *)
+                         &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_3942159674>::GetImpl(void)'
+                          ::__l2::impl);
+      if (bVar1) {
+        DVar3 = CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
+                          (&CSsdpNotifyRequestManager::s_instance,param_1,1);
+        return DVar3;
+      }
+      local_res10[0] = 0;
+      BVar4 = ReleaseSemaphore(param_1,1,local_res10);
+      if (BVar4 == 1) {
         if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
            ((WPP_GLOBAL_Control[0x1c] & 8) != 0)) {
           WPP_SF_qd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x27,
-                    &WPP_24331e58c2c93edee074a803aaed6588_Traceguids,param_1);
+                    &WPP_7f2d2c9fee48373b394f7587accbfb4d_Traceguids,param_1);
         }
         return 0;
       }
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((WPP_GLOBAL_Control[0x1c] & 1) != 0)) {
         GetLastError();
         WPP_SF_qd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x28,
-                  &WPP_24331e58c2c93edee074a803aaed6588_Traceguids,param_1);
+                  &WPP_7f2d2c9fee48373b394f7587accbfb4d_Traceguids,param_1);
       }
-      DVar4 = GetLastError();
-      return DVar4;
+      DVar3 = GetLastError();
+      return DVar3;
     }
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x1c] & 8) != 0)) {
       WPP_SF_q(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x26,
-               &WPP_24331e58c2c93edee074a803aaed6588_Traceguids,param_1);
+               &WPP_7f2d2c9fee48373b394f7587accbfb4d_Traceguids,param_1);
     }
   }
   else if (param_1 != (void *)0x0) goto LAB_0;
   return 0x57;
 }
 

```


## CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|code,name,fullname,refcount,length,sig,address,calling,called|
|ratio|0.28|
|i_ratio|0.23|
|m_ratio|0.64|
|b_ratio|0.63|
|match_types|Implied Match|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|`name`|HrRemoveNotifySemaphoreFromList|HrOperateNotifySemaphoreFromList|
|`fullname`|CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList|CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList|
|`refcount`|2|3|
|`length`|173|405|
|`called`|API-MS-WIN-CORE-HANDLE-L1-1-0.DLL::CloseHandle<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>CUList<CWorkItem*___ptr64>::Iterator::HrGetItem<br>CUList<void*___ptr64>::Iterator::HrErase<br>CUList<void*___ptr64>::Iterator::HrNext|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError<br>API-MS-WIN-CORE-HANDLE-L1-1-0.DLL::CloseHandle<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore<br>CUList<CWorkItem*___ptr64>::Iterator::HrGetItem<br>CUList<void*___ptr64>::Iterator::HrErase<br>CUList<void*___ptr64>::Iterator::HrNext<br>WPP_SF_qd<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled|
|`calling`|_RemoveSyncHandle|_RemoveSyncHandle<br>_WakeupGetNotificationRpc|
|paramcount|3|3|
|`address`|1800321b4|180032324|
|`sig`|long __thiscall HrRemoveNotifySemaphoreFromList(CSsdpNotifyRequestManager * this, void * param_1, int param_2)|long __thiscall HrOperateNotifySemaphoreFromList(CSsdpNotifyRequestManager * this, void * param_1, _Semaphore_OPERATION param_2)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList Called Diff


```diff
--- CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList called
+++ CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList called
@@ -0,0 +1 @@
+API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError
@@ -3,0 +5 @@
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore
@@ -6,0 +9,2 @@
+WPP_SF_qd
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::__private_IsEnabled
```


### CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList Calling Diff


```diff
--- CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList calling
+++ CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList calling
@@ -1,0 +2 @@
+_WakeupGetNotificationRpc
```


### CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList Diff


```diff
--- CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList
+++ CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
@@ -1,40 +1,77 @@
 
-/* public: long __cdecl CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList(void *
-   __ptr64,int) __ptr64 */
+/* public: long __cdecl CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList(void *
+   __ptr64,enum _Semaphore_OPERATION) __ptr64 */
 
 long __thiscall
-CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList
-          (CSsdpNotifyRequestManager *this,void *param_1,int param_2)
+CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
+          (CSsdpNotifyRequestManager *this,void *param_1,_Semaphore_OPERATION param_2)
 
 {
   CWorkItem **ppCVar1;
-  long lVar2;
+  bool bVar2;
   long lVar3;
-  CSsdpNotifyRequestManager *local_res8;
-  CWorkItem **local_res20;
+  DWORD DVar4;
+  BOOL BVar5;
+  DWORD DVar6;
+  undefined2 uVar7;
+  DWORD DVar8;
+  long local_res8 [2];
+  CSsdpNotifyRequestManager *local_res20;
+  CWorkItem **local_38 [2];
   
-  lVar3 = 0;
+  DVar6 = 0;
+  DVar8 = 0;
+  local_res8[0] = 0;
   EnterCriticalSection((LPCRITICAL_SECTION)this);
-  local_res8 = this + 0x28;
-  if (*(longlong *)local_res8 != 0) {
-    local_res20 = (CWorkItem **)0x0;
-    do {
-      lVar2 = CUList<CWorkItem*___ptr64>::Iterator::HrGetItem((Iterator *)&local_res8,&local_res20);
-      ppCVar1 = local_res20;
-      if (lVar2 != 0) break;
-      if (((local_res20 != (CWorkItem **)0x0) && (*local_res20 != (CWorkItem *)0x0)) &&
-         (param_1 == *local_res20)) {
-        if (param_1 != (void *)0x0) {
+  local_res20 = this + 0x28;
+  DVar4 = DVar6;
+  if (*(longlong *)local_res20 != 0) {
+    local_38[0] = (CWorkItem **)0x0;
+    while (lVar3 = CUList<CWorkItem*___ptr64>::Iterator::HrGetItem
+                             ((Iterator *)&local_res20,local_38), ppCVar1 = local_38[0], lVar3 == 0)
+    {
+      if (((local_38[0] != (CWorkItem **)0x0) && (*local_38[0] != (CWorkItem *)0x0)) &&
+         (param_1 == *local_38[0])) {
+        if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+           ((WPP_GLOBAL_Control[0x1c] & 8) != 0)) {
+          WPP_SF_qd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x6a,
+                    &WPP_9afa293c48df3975c2fc4714b43bb12a_Traceguids,param_1);
+        }
+        if (param_2 == 2) {
           CloseHandle(param_1);
           *ppCVar1 = (CWorkItem *)0x0;
+          DVar4 = CUList<void*___ptr64>::Iterator::HrErase((Iterator *)&local_res20);
+          break;
         }
-        lVar3 = CUList<void*___ptr64>::Iterator::HrErase((Iterator *)&local_res8);
+        bVar2 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::
+                __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_3942159674> *)
+                                    &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_3942159674>::GetImpl(void)'
+                                     ::__l2::impl);
+        DVar4 = DVar8;
+        if ((!bVar2) || (param_2 != 1)) break;
+        BVar5 = ReleaseSemaphore(param_1,1,local_res8);
+        if (BVar5 == 1) {
+          if (((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+             ((WPP_GLOBAL_Control[0x1c] & 8) == 0)) break;
+          uVar7 = 0x6b;
+        }
+        else {
+          DVar6 = GetLastError();
+          DVar4 = DVar6;
+          if (((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+             ((WPP_GLOBAL_Control[0x1c] & 1) == 0)) break;
+          uVar7 = 0x6c;
+        }
+        WPP_SF_qd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),uVar7,
+                  &WPP_9afa293c48df3975c2fc4714b43bb12a_Traceguids,param_1);
+        DVar4 = DVar6;
         break;
       }
-      lVar2 = CUList<void*___ptr64>::Iterator::HrNext((Iterator *)&local_res8);
-    } while (lVar2 == 0);
+      lVar3 = CUList<void*___ptr64>::Iterator::HrNext((Iterator *)&local_res20);
+      if (lVar3 != 0) break;
+    }
   }
   LeaveCriticalSection((LPCRITICAL_SECTION)this);
-  return lVar3;
+  return DVar4;
 }
 

```


# Modified (No Code Changes)


*Slightly modified functions have no code changes, rather differnces in:*
- refcount
- length
- called
- calling
- name
- fullname

## API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|AcquireSRWLockExclusive|AcquireSRWLockExclusive|
|fullname|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive|
|`refcount`|35|36|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::OnTimer<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::OnTimer<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|
|paramcount|1|1|
|address|EXTERNAL:00000031|EXTERNAL:00000031|
|sig|void __stdcall AcquireSRWLockExclusive(PSRWLOCK SRWLock)|void __stdcall AcquireSRWLockExclusive(PSRWLOCK SRWLock)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive Calling Diff


```diff
--- API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive calling
+++ API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive calling
@@ -7,0 +8 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState
```


## ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.88|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|fullname|wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|`refcount`|35|36|
|length|29|29|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive|
|`calling`|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::OnTimer<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::OnTimer<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|
|paramcount|1|1|
|`address`|18002b734|18002b764|
|sig|void __thiscall ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>(unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> * this)|void __thiscall ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>(unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> Calling Diff


```diff
--- wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> calling
+++ wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> calling
@@ -7,0 +8 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState
```


## push_back

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.89|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|push_back|push_back|
|fullname|wil::details_abi::heap_buffer::push_back|wil::details_abi::heap_buffer::push_back|
|`refcount`|21|22|
|length|90|90|
|called|_o_memcpy_s<br>wil::details_abi::heap_buffer::ensure|_o_memcpy_s<br>wil::details_abi::heap_buffer::ensure|
|`calling`|<details><summary>Expand for full list:<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::IsFeatureConfigured<br>wil::details_abi::SubscriptionList::SubscribeUnderLock</details>|<details><summary>Expand for full list:<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::IsFeatureConfigured<br>wil::details_abi::SubscriptionList::SubscribeUnderLock</details>|
|paramcount|3|3|
|`address`|180030188|180030464|
|sig|bool __thiscall push_back(heap_buffer * this, void * param_1, __uint64 param_2)|bool __thiscall push_back(heap_buffer * this, void * param_1, __uint64 param_2)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### push_back Calling Diff


```diff
--- wil::details_abi::heap_buffer::push_back calling
+++ wil::details_abi::heap_buffer::push_back calling
@@ -2,0 +3 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState
```


## WilApi_GetFeatureEnabledState

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.56|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|WilApi_GetFeatureEnabledState|WilApi_GetFeatureEnabledState|
|fullname|wil::details::WilApi_GetFeatureEnabledState|wil::details::WilApi_GetFeatureEnabledState|
|`refcount`|16|17|
|length|35|35|
|called|_guard_dispatch_icall$thunk$10345483385596137414|_guard_dispatch_icall$thunk$10345483385596137414|
|`calling`|<details><summary>Expand for full list:<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCurrentFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCurrentFeatureEnabledState</details>|<details><summary>Expand for full list:<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCurrentFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCurrentFeatureEnabledState</details>|
|paramcount|3|3|
|`address`|18002fc68|18002ff08|
|sig|FEATURE_ENABLED_STATE __cdecl WilApi_GetFeatureEnabledState(uint param_1, FEATURE_CHANGE_TIME param_2, int * param_3)|FEATURE_ENABLED_STATE __cdecl WilApi_GetFeatureEnabledState(uint param_1, FEATURE_CHANGE_TIME param_2, int * param_3)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### WilApi_GetFeatureEnabledState Calling Diff


```diff
--- wil::details::WilApi_GetFeatureEnabledState calling
+++ wil::details::WilApi_GetFeatureEnabledState calling
@@ -1,0 +2 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCurrentFeatureEnabledState
```


## ReportUsageToService

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.85|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|ReportUsageToService|ReportUsageToService|
|fullname|wil::details::ReportUsageToService|wil::details::ReportUsageToService|
|`refcount`|17|18|
|length|154|154|
|called|_guard_dispatch_icall$thunk$10345483385596137414<br>wil::details::ReportUsageToServiceDirect<br>wil_details_MapReportingKind|_guard_dispatch_icall$thunk$10345483385596137414<br>wil::details::ReportUsageToServiceDirect<br>wil_details_MapReportingKind|
|`calling`|<details><summary>Expand for full list:<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::ReportUsage</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::ReportUsage</details>|<details><summary>Expand for full list:<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::ReportUsage</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::ReportUsage</details>|
|paramcount|8|8|
|`address`|18002ebe0|18002ee88|
|sig|void __cdecl ReportUsageToService(wil_details_FeatureReportingCache * param_1, uint param_2, int param_3, int param_4, FEATURE_LOGGED_TRAITS * param_5, int param_6, wil_ReportingKind param_7, __uint64 param_8)|void __cdecl ReportUsageToService(wil_details_FeatureReportingCache * param_1, uint param_2, int param_3, int param_4, FEATURE_LOGGED_TRAITS * param_5, int param_6, wil_ReportingKind param_7, __uint64 param_8)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ReportUsageToService Calling Diff


```diff
--- wil::details::ReportUsageToService calling
+++ wil::details::ReportUsageToService calling
@@ -1,0 +2 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::ReportUsage
```


## WPP_SF_qd

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|WPP_SF_qd|WPP_SF_qd|
|fullname|WPP_SF_qd|WPP_SF_qd|
|`refcount`|11|13|
|length|74|74|
|called|NTDLL.DLL::EtwTraceMessage|NTDLL.DLL::EtwTraceMessage|
|`calling`|BuildNLSAndLocationHeaders<br>CSsdpCacheEntry::HrUpdateEntry<br>CSsdpCacheEntryManager::HrUpdateCacheList<br>CSsdpSearchRequest::TimerFired<br>CWorkItem::HrStart<br>SocketSendWithReplacement<br>_WakeupGetNotificationRpc|BuildNLSAndLocationHeaders<br>CSsdpCacheEntry::HrUpdateEntry<br>CSsdpCacheEntryManager::HrUpdateCacheList<br>CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList<br>CSsdpSearchRequest::TimerFired<br>CWorkItem::HrStart<br>SocketSendWithReplacement<br>_WakeupGetNotificationRpc|
|paramcount|4|4|
|`address`|1800306f0|1800309d0|
|sig|undefined __fastcall WPP_SF_qd(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined8 param_4)|undefined __fastcall WPP_SF_qd(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined8 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### WPP_SF_qd Calling Diff


```diff
--- WPP_SF_qd calling
+++ WPP_SF_qd calling
@@ -3,0 +4 @@
+CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
```


## EnsureSubscribedToFeatureConfigurationChanges

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.78|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|EnsureSubscribedToFeatureConfigurationChanges|EnsureSubscribedToFeatureConfigurationChanges|
|fullname|wil::details::EnsureSubscribedToFeatureConfigurationChanges|wil::details::EnsureSubscribedToFeatureConfigurationChanges|
|`refcount`|18|19|
|length|32|32|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl|
|`calling`|<details><summary>Expand for full list:<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::IsFeatureConfigured</details>|<details><summary>Expand for full list:<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1126232377>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_GatePerf>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_ImplVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PerfImpTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintIppPsaStabilityFixes_2505>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_PrintPlatformStabilizationFixes_2502>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Print_PlatformStabilizationFixes_2025_Wave1>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_04_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_05_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_06_NonSec>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_07_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_Standalone_25_08_NonSec>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestGateImp>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_TestLabVal>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxLabTest>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_UxPerfImp>::GetCachedFeatureEnabledState<br>wil::details::IsFeatureConfigured</details>|
|paramcount|0|0|
|`address`|18002c018|18002c048|
|sig|uint __cdecl EnsureSubscribedToFeatureConfigurationChanges(void)|uint __cdecl EnsureSubscribedToFeatureConfigurationChanges(void)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### EnsureSubscribedToFeatureConfigurationChanges Calling Diff


```diff
--- wil::details::EnsureSubscribedToFeatureConfigurationChanges calling
+++ wil::details::EnsureSubscribedToFeatureConfigurationChanges calling
@@ -1,0 +2 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_3942159674>::GetCachedFeatureEnabledState
```


## API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|GetLastError|GetLastError|
|fullname|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError|
|`refcount`|61|62|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>BaseHttpListener::DoInitListening<br>BaseHttpListener::DoReceiveRequestHeaders<br>BaseHttpListener::HandleHTTPRequestWrapper<br>BaseHttpListener::SpawnQueueWorkerThread<br>BaseHttpListener::SpawnWorkerThread<br>CFirewallManager::GetSvchostPath<br>CSsdpNotifyRequest::HrShutdown<br>CSsdpSearchSocketManager::WakeupSelect<br>CUPnPValidAddressInfo::BuildAddressHash<br>CleanupListNetworkForReset<br>DelayLoadHttpApi::LoadHttpApi</summary>DelayedLoadCryptoRandom::CheckLoadCryptoAPI<br>HrFromLastWin32Error<br>ListenOnAllNetworks<br>ProcessSsdpRequest<br>SocketInit<br>SsdpMain<br>SzFromWsz<br>UnreferenceSocket<br>WaitForCallbacksToComplete<br>WszFromSz<br>_InitializeSyncHandle<br>_RegisterNotificationHelper<br>_Shutdown<br>_WakeupGetNotificationRpc<br>wil::details::GetLastErrorFail<br>wil::details_abi::SemaphoreValue::GetValueFromSemaphore<br>wil::details_abi::SemaphoreValue::TryGetValueInternal<br>wil::last_error_context::last_error_context<br>wil::semaphore_t<wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64)_noexcept,&void___cdecl_wil::details::CloseHandle(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>,wil::err_returncode_policy>::create</details>|<details><summary>Expand for full list:<br>BaseHttpListener::DoInitListening<br>BaseHttpListener::DoReceiveRequestHeaders<br>BaseHttpListener::HandleHTTPRequestWrapper<br>BaseHttpListener::SpawnQueueWorkerThread<br>BaseHttpListener::SpawnWorkerThread<br>CFirewallManager::GetSvchostPath<br>CSsdpNotifyRequest::HrShutdown<br>CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList<br>CSsdpSearchSocketManager::WakeupSelect<br>CUPnPValidAddressInfo::BuildAddressHash<br>CleanupListNetworkForReset</summary>DelayLoadHttpApi::LoadHttpApi<br>DelayedLoadCryptoRandom::CheckLoadCryptoAPI<br>HrFromLastWin32Error<br>ListenOnAllNetworks<br>ProcessSsdpRequest<br>SocketInit<br>SsdpMain<br>SzFromWsz<br>UnreferenceSocket<br>WaitForCallbacksToComplete<br>WszFromSz<br>_InitializeSyncHandle<br>_RegisterNotificationHelper<br>_Shutdown<br>_WakeupGetNotificationRpc<br>wil::details::GetLastErrorFail<br>wil::details_abi::SemaphoreValue::GetValueFromSemaphore<br>wil::details_abi::SemaphoreValue::TryGetValueInternal<br>wil::last_error_context::last_error_context<br>wil::semaphore_t<wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64)_noexcept,&void___cdecl_wil::details::CloseHandle(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>,wil::err_returncode_policy>::create</details>|
|paramcount|0|0|
|address|EXTERNAL:0000006e|EXTERNAL:0000006e|
|sig|DWORD __stdcall GetLastError(void)|DWORD __stdcall GetLastError(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError Calling Diff


```diff
--- API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError calling
+++ API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError calling
@@ -7,0 +8 @@
+CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
```


## API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore

### Match Info



|Key|ssdpsrv-09.dll - ssdpsrv-10.dll|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|ssdpsrv-09.dll|ssdpsrv-10.dll|
| :---: | :---: | :---: |
|name|ReleaseSemaphore|ReleaseSemaphore|
|fullname|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore|
|`refcount`|8|9|
|length|0|0|
|called|||
|`calling`|CSsdpNotifyRequest::HrQueuePendingNotification<br>CSsdpSearchRequest::HrAddRequestToResponseMessageList<br>_WakeupGetNotificationRpc<br>wil::details_abi::SemaphoreValue::GetValueFromSemaphore|CSsdpNotifyRequest::HrQueuePendingNotification<br>CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList<br>CSsdpSearchRequest::HrAddRequestToResponseMessageList<br>_WakeupGetNotificationRpc<br>wil::details_abi::SemaphoreValue::GetValueFromSemaphore|
|paramcount|3|3|
|address|EXTERNAL:00000038|EXTERNAL:00000038|
|sig|BOOL __stdcall ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount)|BOOL __stdcall ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore Calling Diff


```diff
--- API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore calling
+++ API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSemaphore calling
@@ -1,0 +2 @@
+CSsdpNotifyRequestManager::HrOperateNotifySemaphoreFromList
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-27T23:45:18</sub>