Showing preview only (4,869K chars total). Download the full file or copy to clipboard to get everything.
Repository: lucasg/Dependencies
Branch: master
Commit: 1997a40000b7
Files: 410
Total size: 4.6 MB
Directory structure:
gitextract_hd4rd2bh/
├── .gitignore
├── ClrPhlib/
│ ├── AssemblyInfo.cpp
│ ├── ClrPhlib.cpp
│ ├── ClrPhlib.manifest
│ ├── ClrPhlib.vcxproj
│ ├── ClrPhlib.vcxproj.filters
│ ├── app.rc
│ ├── include/
│ │ ├── ApiSet.h
│ │ ├── ClrPhSymbolProvider.h
│ │ ├── ClrPhlib.h
│ │ ├── NativeFile.h
│ │ ├── UnmanagedPh.h
│ │ └── UnmanagedSymPrv.h
│ ├── resource.h
│ └── src/
│ ├── managed/
│ │ ├── NativeFile.cpp
│ │ ├── PE.cpp
│ │ ├── PeExport.cpp
│ │ ├── PeImport.cpp
│ │ ├── PhSymbolProvider.cpp
│ │ └── Phlib.cpp
│ └── unmanaged/
│ ├── UnmanagedPE.cpp
│ ├── UnmanagedSymPrv.cpp
│ └── demangle.cpp
├── Dependencies/
│ ├── App.config
│ ├── Dependencies.csproj
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── packages.config
├── Dependencies.sln
├── DependenciesGui/
│ ├── About.xaml
│ ├── About.xaml.cs
│ ├── App.config
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── CustomHeaderViewModel.cs
│ ├── Dependencies.manifest
│ ├── DependenciesGui.csproj
│ ├── DependencyCustomListView.xaml
│ ├── DependencyCustomListView.xaml.cs
│ ├── DependencyExportList.xaml
│ ├── DependencyExportList.xaml.cs
│ ├── DependencyImportList.xaml
│ ├── DependencyImportList.xaml.cs
│ ├── DependencyModuleList.xaml
│ ├── DependencyModuleList.xaml.cs
│ ├── DependencyWindow.xaml
│ ├── DependencyWindow.xaml.cs
│ ├── DragablzCustomHeader.cs
│ ├── DragablzCustomHeader.xaml
│ ├── FilterControl/
│ │ ├── FilterControl.cs
│ │ └── FilterControl.generic.xaml
│ ├── GridViewSort.cs
│ ├── Helpers/
│ │ ├── RelayCommand.cs
│ │ └── SettingBindingHandler.cs
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ ├── Models/
│ │ ├── ModuleInfo.cs
│ │ ├── PeExport.cs
│ │ └── PeImport.cs
│ ├── ModuleSearchOrder.xaml
│ ├── ModuleSearchOrder.xaml.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── SearchFolder.xaml
│ ├── SearchFolder.xaml.cs
│ ├── Settings.cs
│ ├── Shell32IconExtractor.cs
│ ├── UserSettings.xaml
│ ├── UserSettings.xaml.cs
│ └── packages.config
├── DependenciesLib/
│ ├── BinaryCache.cs
│ ├── DependenciesLib.csproj
│ ├── FindPeModule.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── SxsManifest.cs
├── Deploy-Dependencies.ps1
├── LICENSE
├── README.md
├── appveyor.yml
├── nuget.config
├── test/
│ ├── binarycache-test/
│ │ ├── App.config
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── binarycache-test.csproj
│ │ └── packages.config
│ ├── demangler-test/
│ │ ├── App.config
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── demangler-test.csproj
│ │ └── packages.config
│ └── manifest-regress/
│ ├── Test-ManifestRegress.ps1
│ └── schedsvc.dll.manifest
└── third_party/
├── Dragablz/
│ └── Dragablz/
│ ├── CanvasOrganiser.cs
│ ├── ContainerCustomisations.cs
│ ├── Converters/
│ │ ├── BooleanAndToVisibilityConverter.cs
│ │ ├── EqualityToBooleanConverter.cs
│ │ ├── EqualityToVisibilityConverter.cs
│ │ └── ShowDefaultCloseButtonConverter.cs
│ ├── Core/
│ │ ├── CollectionTeaser.cs
│ │ ├── Extensions.cs
│ │ ├── FuncComparer.cs
│ │ ├── HitTest.cs
│ │ ├── InterTabTransfer.cs
│ │ ├── MultiComparer.cs
│ │ ├── Native.cs
│ │ ├── SystemCommand.cs
│ │ ├── TabHeaderDragStartInformation.cs
│ │ └── WindowMessage.cs
│ ├── DefaultInterLayoutClient.cs
│ ├── DefaultInterTabClient.cs
│ ├── Dockablz/
│ │ ├── Branch.cs
│ │ ├── BranchAccessor.cs
│ │ ├── BranchItem.cs
│ │ ├── BranchResult.cs
│ │ ├── CouldBeHeaderedStyleSelector.cs
│ │ ├── DropZone.cs
│ │ ├── DropZoneLocation.cs
│ │ ├── Extensions.cs
│ │ ├── Finder.cs
│ │ ├── FloatRequestedEvent.cs
│ │ ├── FloatTransfer.cs
│ │ ├── FloatingItemSnapShot.cs
│ │ ├── Layout.cs
│ │ ├── LayoutAccessor.cs
│ │ ├── LocationReport.cs
│ │ ├── LocationReportBuilder.cs
│ │ ├── LocationReportException.cs
│ │ ├── LocationSnapShot.cs
│ │ ├── Tiler.cs
│ │ └── TilerCalculator.cs
│ ├── Dragablz.net40.csproj
│ ├── Dragablz.net45.csproj
│ ├── Dragablz.nuspec
│ ├── DragablzColors.cs
│ ├── DragablzDragCompletedEventArgs.cs
│ ├── DragablzDragDeltaEventArgs.cs
│ ├── DragablzDragStartedEventArgs.cs
│ ├── DragablzIcon.cs
│ ├── DragablzItem.cs
│ ├── DragablzItemEventArgs.cs
│ ├── DragablzItemsControl.cs
│ ├── DragablzWindow.cs
│ ├── EmptyHeaderSizingHint.cs
│ ├── HeaderedDragablzItem.cs
│ ├── HeaderedItemViewModel.cs
│ ├── HorizontalOrganiser.cs
│ ├── HorizontalPositionMonitor.cs
│ ├── IInterLayoutClient.cs
│ ├── IInterTabClient.cs
│ ├── IItemsOrganiser.cs
│ ├── IManualInterTabClient.cs
│ ├── INewTabHost.cs
│ ├── InterTabController.cs
│ ├── ItemActionCallbackArgs.cs
│ ├── LocationChangedEventArgs.cs
│ ├── LocationHint.cs
│ ├── MoveItemRequest.cs
│ ├── NewTabHost.cs
│ ├── OrderChangedEventArgs.cs
│ ├── PositionMonitor.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Referenceless/
│ │ ├── AnonymousDisposable.cs
│ │ ├── DefaultDisposable.cs
│ │ ├── Disposable.cs
│ │ ├── ICancelable.cs
│ │ └── SerialDisposable.cs
│ ├── StackOrganiser.cs
│ ├── StackPositionMonitor.cs
│ ├── StoryboardCompletionListener.cs
│ ├── TabEmptiedResponse.cs
│ ├── TabablzControl.cs
│ ├── TabablzHeaderSizeConverter.cs
│ ├── TabablzItemStyleSelector.cs
│ ├── Themes/
│ │ ├── BrushToRadialGradientBrushConverter.cs
│ │ ├── Dockablz.xaml
│ │ ├── Generic.xaml
│ │ ├── MahApps.xaml
│ │ ├── MaterialDesign.xaml
│ │ ├── MaterialDesignAssist.cs
│ │ ├── Ripple.cs
│ │ ├── RippleAssist.cs
│ │ └── SystemCommandIcon.cs
│ ├── Trapezoid.cs
│ ├── VerticalOrganiser.cs
│ └── VerticalPositionMonitor.cs
├── Get-ProcessHackerSources.ps1
├── Ph-d7342929f1426e597b95e0c20a9b9651d406f410-__acrt_fp_format-bug-and-specify-CLR-compilation.patch
├── Ph-dc6a8a94f7e4b381090b46eb8e1b9fd7de052dbe-__acrt_fp_format-bug-and-specify-CLR-compilation.patch
├── demumble/
│ ├── CMakeLists.txt
│ ├── LICENSE
│ ├── README.md
│ ├── RELEASING
│ ├── demumble.vcxproj
│ ├── demumble.vcxproj.filters
│ └── third_party/
│ ├── libcxxabi/
│ │ ├── LICENSE.txt
│ │ └── cxa_demangle.cpp
│ └── wine/
│ ├── LICENSE.txt
│ └── undname.c
├── llvm-demangle/
│ ├── README.md
│ ├── include/
│ │ └── llvm/
│ │ └── Demangle/
│ │ ├── Compiler.h
│ │ ├── Demangle.h
│ │ ├── ItaniumDemangle.h
│ │ ├── StringView.h
│ │ └── Utility.h
│ ├── lib/
│ │ └── Demangle/
│ │ ├── CMakeLists.txt
│ │ ├── ItaniumDemangle.cpp
│ │ ├── LLVMBuild.txt
│ │ ├── MicrosoftDemangle.cpp
│ │ ├── MicrosoftDemangleNodes.cpp
│ │ └── MicrosoftDemangleNodes.h
│ ├── llvm-demangle.vcxproj
│ └── llvm-demangle.vcxproj.filters
├── phlib/
│ ├── apiimport.c
│ ├── appresolver.c
│ ├── avltree.c
│ ├── basesup.c
│ ├── circbuf.c
│ ├── circbuf_i.h
│ ├── colorbox.c
│ ├── cpysave.c
│ ├── data.c
│ ├── dspick.c
│ ├── emenu.c
│ ├── error.c
│ ├── extlv.c
│ ├── fastlock.c
│ ├── filepool.c
│ ├── filestream.c
│ ├── format.c
│ ├── format_i.h
│ ├── global.c
│ ├── graph.c
│ ├── guisup.c
│ ├── handle.c
│ ├── hexedit.c
│ ├── hndlinfo.c
│ ├── icotobmp.c
│ ├── include/
│ │ ├── apiimport.h
│ │ ├── appresolver.h
│ │ ├── appresolverp.h
│ │ ├── circbuf.h
│ │ ├── circbuf_h.h
│ │ ├── colorbox.h
│ │ ├── cpysave.h
│ │ ├── dltmgr.h
│ │ ├── dspick.h
│ │ ├── emenu.h
│ │ ├── exlf.h
│ │ ├── fastlock.h
│ │ ├── filepool.h
│ │ ├── filepoolp.h
│ │ ├── filestream.h
│ │ ├── filestreamp.h
│ │ ├── graph.h
│ │ ├── guisup.h
│ │ ├── guisupp.h
│ │ ├── handle.h
│ │ ├── handlep.h
│ │ ├── hexedit.h
│ │ ├── hexeditp.h
│ │ ├── hndlinfo.h
│ │ ├── json.h
│ │ ├── kphapi.h
│ │ ├── kphuser.h
│ │ ├── kphuserp.h
│ │ ├── lsasup.h
│ │ ├── mapimg.h
│ │ ├── ph.h
│ │ ├── phbase.h
│ │ ├── phbasesup.h
│ │ ├── phconfig.h
│ │ ├── phdata.h
│ │ ├── phintrnl.h
│ │ ├── phnative.h
│ │ ├── phnativeinl.h
│ │ ├── phnet.h
│ │ ├── phsup.h
│ │ ├── phutil.h
│ │ ├── provider.h
│ │ ├── queuedlock.h
│ │ ├── ref.h
│ │ ├── refp.h
│ │ ├── secedit.h
│ │ ├── seceditp.h
│ │ ├── settings.h
│ │ ├── svcsup.h
│ │ ├── symprv.h
│ │ ├── symprvp.h
│ │ ├── templ.h
│ │ ├── treenew.h
│ │ ├── treenewp.h
│ │ ├── verify.h
│ │ ├── verifyp.h
│ │ ├── workqueue.h
│ │ └── workqueuep.h
│ ├── json.c
│ ├── jsonc/
│ │ ├── AUTHORS
│ │ ├── COPYING
│ │ ├── ChangeLog
│ │ ├── arraylist.c
│ │ ├── arraylist.h
│ │ ├── bits.h
│ │ ├── config.h
│ │ ├── config.h.in
│ │ ├── debug.c
│ │ ├── debug.h
│ │ ├── json.h
│ │ ├── json_c_version.c
│ │ ├── json_c_version.h
│ │ ├── json_config.h
│ │ ├── json_inttypes.h
│ │ ├── json_object.c
│ │ ├── json_object.h
│ │ ├── json_object_iterator.c
│ │ ├── json_object_iterator.h
│ │ ├── json_object_private.h
│ │ ├── json_tokener.c
│ │ ├── json_tokener.h
│ │ ├── json_util.c
│ │ ├── json_util.h
│ │ ├── libjson.c
│ │ ├── linkhash.c
│ │ ├── linkhash.h
│ │ ├── math_compat.h
│ │ ├── printbuf.c
│ │ ├── printbuf.h
│ │ ├── random_seed.c
│ │ └── random_seed.h
│ ├── kph.c
│ ├── kphdata.c
│ ├── lsasup.c
│ ├── mapexlf.c
│ ├── mapimg.c
│ ├── maplib.c
│ ├── md5.c
│ ├── md5.h
│ ├── mxml/
│ │ ├── COPYING
│ │ ├── config.h
│ │ ├── mxml-attr.c
│ │ ├── mxml-entity.c
│ │ ├── mxml-file.c
│ │ ├── mxml-get.c
│ │ ├── mxml-index.c
│ │ ├── mxml-node.c
│ │ ├── mxml-private.c
│ │ ├── mxml-private.h
│ │ ├── mxml-search.c
│ │ ├── mxml-set.c
│ │ ├── mxml-string.c
│ │ └── mxml.h
│ ├── native.c
│ ├── phlib.vcxproj
│ ├── phlib.vcxproj.filters
│ ├── provider.c
│ ├── queuedlock.c
│ ├── ref.c
│ ├── secdata.c
│ ├── secedit.c
│ ├── settings.c
│ ├── sha.c
│ ├── sha.h
│ ├── sha256.c
│ ├── sha256.h
│ ├── svcsup.c
│ ├── symprv.c
│ ├── sync.c
│ ├── treenew.c
│ ├── util.c
│ ├── verify.c
│ └── workqueue.c
└── phnt/
├── README.md
├── include/
│ ├── ntdbg.h
│ ├── ntexapi.h
│ ├── ntgdi.h
│ ├── ntioapi.h
│ ├── ntkeapi.h
│ ├── ntldr.h
│ ├── ntlpcapi.h
│ ├── ntmisc.h
│ ├── ntmmapi.h
│ ├── ntnls.h
│ ├── ntobapi.h
│ ├── ntpebteb.h
│ ├── ntpfapi.h
│ ├── ntpnpapi.h
│ ├── ntpoapi.h
│ ├── ntpsapi.h
│ ├── ntregapi.h
│ ├── ntrtl.h
│ ├── ntsam.h
│ ├── ntseapi.h
│ ├── ntsmss.h
│ ├── nttmapi.h
│ ├── nttp.h
│ ├── ntwow64.h
│ ├── ntxcapi.h
│ ├── ntzwapi.h
│ ├── phnt.h
│ ├── phnt_ntdef.h
│ ├── phnt_windows.h
│ ├── subprocesstag.h
│ └── winsta.h
└── zw_options.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.vs/
obj/
bin/
packages/
_packages/
tests/
*.obj
*.log
*.tlog
*.VC.db
*.cache
*.pdb
*.pch
*.user
_ReSharper.Caches/
/**/x64-Debug
================================================
FILE: ClrPhlib/AssemblyInfo.cpp
================================================
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
//
// Les informations générales relatives à un assembly dépendent de
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
// associées à un assembly.
//
[assembly:AssemblyTitleAttribute(L"ClrPhlib")];
[assembly:AssemblyDescriptionAttribute(L"")];
[assembly:AssemblyConfigurationAttribute(L"")];
[assembly:AssemblyCompanyAttribute(L"")];
[assembly:AssemblyProductAttribute(L"ClrPhlib")];
[assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2017")];
[assembly:AssemblyTrademarkAttribute(L"")];
[assembly:AssemblyCultureAttribute(L"")];
//
// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
//
// Version principale
// Version secondaire
// Numéro de build
// Révision
//
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de révision et de build par défaut
// en utilisant '*', comme indiqué ci-dessous :
[assembly:AssemblyVersionAttribute("1.10.*")];
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];
================================================
FILE: ClrPhlib/ClrPhlib.cpp
================================================
#include <ClrPhlib.h>
using namespace Dependencies;
ClrPh::CLRPH_ARCH ClrPh::Phlib::GetClrPhArch()
{
#if _WIN64
return ClrPh::CLRPH_ARCH::x64;
#else
if (PhIsExecutingInWow64())
return ClrPh::CLRPH_ARCH::WOW64;
return ClrPh::CLRPH_ARCH::x86;
#endif // _WIN64
}
================================================
FILE: ClrPhlib/ClrPhlib.manifest
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="ClrPhLib"
processorArchitecture="*"
version="1.7.0.0"
type="win32"
/>
<description>CLR Process Hacker library</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<longPathAware>true</longPathAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
================================================
FILE: ClrPhlib/ClrPhlib.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Appx|Win32">
<Configuration>Appx</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Appx|x64">
<Configuration>Appx</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}</ProjectGuid>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<Keyword>ManagedCProj</Keyword>
<RootNamespace>ClrPhlib</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Appx|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Appx|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
<SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Appx|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Appx|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)bin\$(Configuration)$(PlatformArchitecture)\</OutDir>
<IntDir>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(PlatformArchitecture)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)bin\$(Configuration)$(PlatformArchitecture)\</OutDir>
<IntDir>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(PlatformArchitecture)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)bin\$(Configuration)$(PlatformArchitecture)\</OutDir>
<IntDir>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(PlatformArchitecture)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Appx|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)bin\$(Configuration)$(PlatformArchitecture)\</OutDir>
<IntDir>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(PlatformArchitecture)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)bin\$(Configuration)$(PlatformArchitecture)\</OutDir>
<IntDir>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(PlatformArchitecture)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Appx|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)bin\$(Configuration)$(PlatformArchitecture)\</OutDir>
<IntDir>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(PlatformArchitecture)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>$(SolutionDir)third_party\phnt\include;$(SolutionDir)third_party\phlib\include;$(ProjectDir)include;$(SolutionDir)third_party\llvm-demangle\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeaderFile />
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<AdditionalDependencies>$(OutputPath)\phlib.lib;$(OutputPath)\demumble.lib;$(OutputPath)\llvm-demangle.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<CLRImageType>Default</CLRImageType>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>$(SolutionDir)third_party\phnt\include;$(SolutionDir)third_party\phlib\include;$(ProjectDir)include;$(SolutionDir)third_party\llvm-demangle\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<PrecompiledHeaderFile />
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<AdditionalDependencies>$(OutputPath)\phlib.lib;$(OutputPath)\demumble.lib;$(OutputPath)\llvm-demangle.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<CLRImageType>Default</CLRImageType>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>$(SolutionDir)third_party\phnt\include;$(SolutionDir)third_party\phlib\include;$(ProjectDir)include;$(SolutionDir)third_party\llvm-demangle\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeaderFile />
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<AdditionalDependencies>$(OutputPath)\phlib.lib;$(OutputPath)\demumble.lib;$(OutputPath)\llvm-demangle.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<CLRImageType>Default</CLRImageType>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Appx|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>$(SolutionDir)third_party\phnt\include;$(SolutionDir)third_party\phlib\include;$(ProjectDir)include;$(SolutionDir)third_party\llvm-demangle\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<AdditionalDependencies>$(OutputPath)\phlib.lib;$(OutputPath)\demumble.lib;$(OutputPath)\llvm-demangle.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<CLRImageType>Default</CLRImageType>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>$(SolutionDir)third_party\phnt\include;$(SolutionDir)third_party\phlib\include;$(ProjectDir)include;$(SolutionDir)third_party\llvm-demangle\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeaderFile />
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<AdditionalDependencies>$(OutputPath)\phlib.lib;$(OutputPath)\demumble.lib;$(OutputPath)\llvm-demangle.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<CLRImageType>Default</CLRImageType>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Appx|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<AdditionalIncludeDirectories>$(SolutionDir)third_party\phnt\include;$(SolutionDir)third_party\phlib\include;$(ProjectDir)include;$(SolutionDir)third_party\llvm-demangle\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<Link>
<AdditionalDependencies>$(OutputPath)\phlib.lib;$(OutputPath)\demumble.lib;$(OutputPath)\llvm-demangle.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<CLRImageType>Default</CLRImageType>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="include\ApiSet.h" />
<ClInclude Include="include\ClrPhlib.h" />
<ClInclude Include="include\ClrPhSymbolProvider.h" />
<ClInclude Include="include\NativeFile.h" />
<ClInclude Include="include\UnmanagedPh.h" />
<ClInclude Include="include\UnmanagedSymPrv.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="AssemblyInfo.cpp" />
<ClCompile Include="ClrPhlib.cpp" />
<ClCompile Include="src\managed\NativeFile.cpp" />
<ClCompile Include="src\managed\PE.cpp" />
<ClCompile Include="src\managed\PeExport.cpp" />
<ClCompile Include="src\managed\PeImport.cpp" />
<ClCompile Include="src\managed\Phlib.cpp" />
<ClCompile Include="src\managed\PhSymbolProvider.cpp" />
<ClCompile Include="src\unmanaged\demangle.cpp" />
<ClCompile Include="src\unmanaged\UnmanagedPE.cpp" />
<ClCompile Include="src\unmanaged\UnmanagedSymPrv.cpp" />
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="app.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="app.ico" />
</ItemGroup>
<ItemGroup>
<Manifest Include="ClrPhlib.manifest" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
================================================
FILE: ClrPhlib/ClrPhlib.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Fichiers sources">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Fichiers d%27en-tête">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Fichiers de ressources">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Fichiers sources\Managed">
<UniqueIdentifier>{e9536ddc-3c30-4ef3-99fa-0e7f44736ebb}</UniqueIdentifier>
</Filter>
<Filter Include="Fichiers sources\Unmanaged">
<UniqueIdentifier>{e79a5a25-1203-4753-8c5a-644629cfac1a}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="include\ClrPhlib.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="include\UnmanagedPh.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="include\ApiSet.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="include\NativeFile.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="include\UnmanagedSymPrv.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
<ClInclude Include="include\ClrPhSymbolProvider.h">
<Filter>Fichiers d%27en-tête</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="ClrPhlib.cpp">
<Filter>Fichiers sources</Filter>
</ClCompile>
<ClCompile Include="AssemblyInfo.cpp">
<Filter>Fichiers sources</Filter>
</ClCompile>
<ClCompile Include="src\unmanaged\UnmanagedPE.cpp">
<Filter>Fichiers sources\Unmanaged</Filter>
</ClCompile>
<ClCompile Include="src\unmanaged\UnmanagedSymPrv.cpp">
<Filter>Fichiers sources\Unmanaged</Filter>
</ClCompile>
<ClCompile Include="src\managed\PE.cpp">
<Filter>Fichiers sources\Managed</Filter>
</ClCompile>
<ClCompile Include="src\managed\PeExport.cpp">
<Filter>Fichiers sources\Managed</Filter>
</ClCompile>
<ClCompile Include="src\managed\PeImport.cpp">
<Filter>Fichiers sources\Managed</Filter>
</ClCompile>
<ClCompile Include="src\managed\Phlib.cpp">
<Filter>Fichiers sources\Managed</Filter>
</ClCompile>
<ClCompile Include="src\managed\PhSymbolProvider.cpp">
<Filter>Fichiers sources\Managed</Filter>
</ClCompile>
<ClCompile Include="src\managed\NativeFile.cpp">
<Filter>Fichiers sources\Managed</Filter>
</ClCompile>
<ClCompile Include="src\unmanaged\demangle.cpp">
<Filter>Fichiers sources\Unmanaged</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="app.rc">
<Filter>Fichiers de ressources</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="app.ico">
<Filter>Fichiers de ressources</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<Manifest Include="ClrPhlib.manifest" />
</ItemGroup>
</Project>
================================================
FILE: ClrPhlib/include/ApiSet.h
================================================
#pragma once
#include <ph.h>
#ifdef __cplusplus
extern "C" {
#endif
///////////////////////////////////////////////////////////////////////////////
// ApiSet v2
typedef struct _API_SET_VALUE_ENTRY_REDIRECTION_V2 {
ULONG NameOffset;
USHORT NameLength;
ULONG ValueOffset;
USHORT ValueLength;
} API_SET_VALUE_ENTRY_REDIRECTION_V2, *PAPI_SET_VALUE_ENTRY_REDIRECTION_V2;
typedef struct _API_SET_VALUE_ENTRY_V2 {
ULONG NumberOfRedirections;
API_SET_VALUE_ENTRY_REDIRECTION_V2 Redirections[ANYSIZE_ARRAY];
} API_SET_VALUE_ENTRY_V2, *PAPI_SET_VALUE_ENTRY_V2;
typedef struct _API_SET_NAMESPACE_ENTRY_V2 {
ULONG NameOffset;
ULONG NameLength;
ULONG DataOffset; // ===> _API_SET_VALUE_ENTRY_V2
} API_SET_NAMESPACE_ENTRY_V2, *PAPI_SET_NAMESPACE_ENTRY_V2;
typedef struct _API_SET_NAMESPACE_V2 {
ULONG Version;
ULONG Count;
API_SET_NAMESPACE_ENTRY_V2 Array[ANYSIZE_ARRAY];
} API_SET_NAMESPACE_V2, *PAPI_SET_NAMESPACE_V2;
///////////////////////////////////////////////////////////////////////////////
// ApiSet v4
typedef struct _API_SET_VALUE_ENTRY_REDIRECTION_V4 {
ULONG Flags;
ULONG NameOffset;
ULONG NameLength;
ULONG ValueOffset;
ULONG ValueLength;
} API_SET_VALUE_ENTRY_REDIRECTION_V4, *PAPI_SET_VALUE_ENTRY_REDIRECTION_V4;
typedef struct _API_SET_VALUE_ENTRY_V4 {
ULONG Flags;
ULONG NumberOfRedirections;
API_SET_VALUE_ENTRY_REDIRECTION_V4 Redirections[ANYSIZE_ARRAY];
} API_SET_VALUE_ENTRY_V4, *PAPI_SET_VALUE_ENTRY_V4;
typedef struct _API_SET_NAMESPACE_ENTRY_V4 {
ULONG Flags;
ULONG NameOffset;
ULONG NameLength;
ULONG AliasOffset;
ULONG AliasLength;
ULONG DataOffset; // ===> _API_SET_VALUE_ENTRY_V4
} API_SET_NAMESPACE_ENTRY_V4, *PAPI_SET_NAMESPACE_ENTRY_V4;
typedef struct _API_SET_NAMESPACE_V4 {
ULONG Version;
ULONG Size;
ULONG Flags;
ULONG Count;
API_SET_NAMESPACE_ENTRY_V4 Array[ANYSIZE_ARRAY];
} API_SET_NAMESPACE_V4, *PAPI_SET_NAMESPACE_V4;
///////////////////////////////////////////////////////////////////////////////
// ApiSet v6
typedef struct _API_SET_HASH_ENTRY_V6 {
ULONG Hash;
ULONG Index;
} API_SET_HASH_ENTRY_V6, *PAPI_SET_HASH_ENTRY_V6;
typedef struct _API_SET_NAMESPACE_ENTRY_V6 {
ULONG Flags;
ULONG NameOffset;
ULONG NameLength;
ULONG HashedLength;
ULONG ValueOffset;
ULONG ValueCount;
} API_SET_NAMESPACE_ENTRY_V6, *PAPI_SET_NAMESPACE_ENTRY_V6;
typedef struct _API_SET_VALUE_ENTRY_V6 {
ULONG Flags;
ULONG NameOffset;
ULONG NameLength;
ULONG ValueOffset;
ULONG ValueLength;
} API_SET_VALUE_ENTRY_V6, *PAPI_SET_VALUE_ENTRY_V6;
typedef struct _API_SET_NAMESPACE_V6 {
ULONG Version;
ULONG Size;
ULONG Flags;
ULONG Count;
ULONG EntryOffset;
ULONG HashOffset;
ULONG HashFactor;
} API_SET_NAMESPACE_V6, *PAPI_SET_NAMESPACE_V6;
///////////////////////////////////////////////////////////////////////////////
typedef struct _API_SET_NAMESPACE {
union
{
ULONG Version;
API_SET_NAMESPACE_V2 ApiSetNameSpaceV2;
API_SET_NAMESPACE_V4 ApiSetNameSpaceV4;
API_SET_NAMESPACE_V6 ApiSetNameSpaceV6;
};
} API_SET_NAMESPACE, *PAPI_SET_NAMESPACE;
#ifdef __cplusplus
}
#endif
================================================
FILE: ClrPhlib/include/ClrPhSymbolProvider.h
================================================
#pragma once
#include <ClrPhlib.h>
#include <UnmanagedSymPrv.h>
using namespace Dependencies::ClrPh;
// Symbol resolution and undecoration utility class
public ref class PhSymbolProvider
{
public:
PhSymbolProvider();
~PhSymbolProvider();
!PhSymbolProvider();
virtual Tuple<CLRPH_DEMANGLER, String^>^ UndecorateName(_In_ String ^DecoratedName);
protected:
String^ UndecorateNameDemumble(_In_ String ^DecoratedName);
String^ UndecorateNameLLVMItanium(_In_ String ^DecoratedName);
String^ UndecorateNameLLVMMicrosoft(_In_ String ^DecoratedName);
String^ UndecorateNamePh(_In_ String ^DecoratedName);
private:
String ^ UndecorateNamePrv(_In_ String ^DecoratedName, _In_ DemangleNameFn Demangler);
UnmanagedSymPrv *m_Impl;
};
================================================
FILE: ClrPhlib/include/ClrPhlib.h
================================================
// ClrPhlib.h
#pragma once
#include <UnmanagedPh.h>
#using <System.dll>
using namespace System;
using namespace Collections::Generic;
namespace Dependencies {
namespace ClrPh {
#pragma region ENUMS
public enum class CLRPH_ARCH
{
x86,
x64,
WOW64
};
public enum class CLRPH_DEMANGLER
{
None,
Demumble,
LLVMItanium,
LLVMMicrosoft,
Microsoft,
Default // Synthetic demangler using all the previous ones
};
#pragma endregion ENUMS
#pragma region TYPES
public ref class ApiSetTarget : List<String^> {};
public ref class ApiSetSchema abstract
{
public:
virtual List<KeyValuePair<String^, ApiSetTarget^>>^ GetAll() = 0;
virtual ApiSetTarget^ Lookup(String^ name) = 0;
};
#pragma endregion TYPES
public ref class Phlib {
public:
// Return the arch is which ClrPhLib runs.
static CLRPH_ARCH GetClrPhArch();
// Imitialize Process Hacker's phlib internal data
// Must be called before any other API (kinda like OleInitialize).
static bool InitializePhLib();
// Return the list of knwown dll for this system
static List<String^>^ GetKnownDlls(_In_ bool Wow64Dlls);
static List<String^>^ KnownDll64List;
static List<String^>^ KnownDll32List;
// Return the Api Set schema:
// NB: Api set resolution rely on hash buckets who
// can contains more entries than this schema.
static ApiSetSchema^ GetApiSetSchema();
};
public ref struct PeImport {
UInt16 Hint;
UInt16 Ordinal;
String ^ Name;
String ^ ModuleName;
Boolean ImportByOrdinal;
Boolean DelayImport;
PeImport(const PPH_MAPPED_IMAGE_IMPORT_DLL importDll, size_t Index);
PeImport(const PeImport ^ other);
~PeImport();
};
public ref struct PeImportDll {
public:
Int64 Flags;
String ^Name;
Int64 NumberOfEntries;
List<PeImport^>^ ImportList;
// constructors
PeImportDll(const PPH_MAPPED_IMAGE_IMPORTS &PvMappedImports, size_t ImportDllIndex);
PeImportDll(const PeImportDll ^ other);
// destructors
~PeImportDll();
// getters
bool IsDelayLoad();
protected:
!PeImportDll();
private:
PPH_MAPPED_IMAGE_IMPORT_DLL ImportDll;
};
public ref struct PeExport {
UInt16 Ordinal;
String ^ Name; // may be NULL.
Boolean ExportByOrdinal;
Int64 VirtualAddress;
String ^ ForwardedName;
PeExport();
PeExport(const PeExport ^ other);
~PeExport();
static PeExport^ FromMapimg(const UnmanagedPE& refPe, size_t Index);
};
public ref struct PeProperties {
Int16 Machine;
DateTime ^ Time;
Int16 Magic;
Int64 ImageBase;
Int32 SizeOfImage;
Int64 EntryPoint;
Int32 Checksum;
Boolean CorrectChecksum;
Int16 Subsystem;
Tuple<Int16, Int16> ^SubsystemVersion;
Int16 Characteristics;
Int16 DllCharacteristics;
UInt64 FileSize;
};
// C# visible class representing a parsed PE file
public ref class PE
{
public:
PE(_In_ String^ Filepath);
~PE();
// Mapped the PE in memory and init infos
bool Load();
// Unmapped the PE from memory
void Unload();
// Check if the PE is 32-bit
bool IsWow64Dll();
// Check if the PE is 32-bit
bool IsArm32Dll();
// return the processorArchiture of PE
String^ GetProcessor();
// Return the ApiSetSchema
ApiSetSchema^ GetApiSetSchema();
// Return the list of functions exported by the PE
List<PeExport ^>^ GetExports();
// Return the list of functions imported by the PE, bundled by Dll name
List<PeImportDll ^>^ GetImports();
// Retrieve the manifest embedded within the PE
// Return an empty string if there is none.
String^ GetManifest();
// PE properties parsed from the NT header
PeProperties ^Properties;
// Check if the specified file has been successfully parsed as a PE file.
Boolean LoadSuccessful;
// Path to PE file.
String^ Filepath;
protected:
// Deallocate the native object on the finalizer just in case no destructor is called
!PE();
// Initalize PeProperties struct once the PE has been loaded into memory
bool InitProperties();
private:
// C++ part interfacing with phlib
UnmanagedPE * m_Impl;
// local cache for imports and exports list
List<PeImportDll ^>^ m_Imports;
List<PeExport ^>^ m_Exports;
bool m_ExportsInit;
bool m_ImportsInit;
};
}
}
================================================
FILE: ClrPhlib/include/NativeFile.h
================================================
// Native.h
#pragma once
#include <UnmanagedPh.h>
#include <stdint.h>
#using <System.dll>
using namespace System;
namespace Dependencies {
namespace ClrPh {
// Partial rewrite of System.IO.File in order to circumvent the wow64 system folder redirection
// that is not properly handled in .Net Core.
public ref class NativeFile {
public:
// @return true if the path actually points to a file on the disk
static bool Exists(_In_ String^ Path);
static bool Exists(_In_ String^ Path, bool IsFolder);
// Copy a filename to a new location
static void Copy(_In_ String^ sourceFileName, _In_ String^ destFileName);
// Hash the first FileSize bytes of a file, using SHA256.
static String^ GetPartialHashFile(_In_ String^ Path, _In_ size_t FileSize);
private:
// Hash buffer using bcrypt library
static bool HashBuffer(_In_ uint8_t *Buffer, _In_ size_t BufferSize, _In_ wchar_t *HASH_ALGORITHM, _Outptr_ void **Hash, _Out_ size_t *HashSize);
// @return a hex string representing the buffer values, kinda like Python's binascii.hexlify
static String^ GetHexString(_In_ uint8_t *Buffer, _In_ size_t BufferSize);
// Ignore system32 folder redirection since we may analyzing 64-bit binaries on a 32-bit Dependencies
static bool DisableWow64FsRedirection();
// revert redirection since it may have unpredictible results further down the line
static bool RevertWow64FsRedirection();
};
} /* namespace ClrPh */
} /* namespace System */
================================================
FILE: ClrPhlib/include/UnmanagedPh.h
================================================
#pragma once
#include <ph.h>
#include <mapimg.h>
// C++ part of the PE class interfacing with phlib.
// Responsible for mapping/unmapping the PE file in memory and
// parse the NT headers and Directory entries.
class UnmanagedPE {
public:
UnmanagedPE();
~UnmanagedPE();
// Try to load the PE pointed by Filepath in memmory
bool LoadPE(LPWSTR Filepath);
// Unload the memory mapped PE in order to release the FS lock
void UnloadPE();
// Extract the manifest embedded within the mapped PE
//
// /param manifest variable pointing to the part of the mapped file holding the manifest (no allocations here)
// /param manifestLen variable returning the length of the embedded binary manifest
// /return false if there is none
bool GetPeManifest(
_Out_ BYTE* *manifest,
_Out_ INT *manifestLen
);
PH_MAPPED_IMAGE m_PvMappedImage;
PH_MAPPED_IMAGE_EXPORTS m_PvExports;
PH_MAPPED_IMAGE_IMPORTS m_PvImports;
PH_MAPPED_IMAGE_IMPORTS m_PvDelayImports;
union {
PIMAGE_LOAD_CONFIG_DIRECTORY32 m_PvConfig32;
PIMAGE_LOAD_CONFIG_DIRECTORY64 m_PvCconfig64;
};
private:
bool m_bImageLoaded;
};
================================================
FILE: ClrPhlib/include/UnmanagedSymPrv.h
================================================
#pragma once
#include <stdbool.h>
#include <ph.h>
#include <symprv.h>
#include <ClrPhlib.h>
// Native Symbol Provider class.
// Allow the application to unmangle C and C++ mangled names.
class UnmanagedSymPrv {
public:
// Initialize a new provider.
static UnmanagedSymPrv* Create();
// Attempt to demangle a C/C++ name. Return false if the name is not mangled.
bool DemangleName(
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen,
_Out_ Dependencies::ClrPh::CLRPH_DEMANGLER *Demangler
);
public:
PPH_SYMBOL_PROVIDER m_SymbolProvider;
};
typedef bool(__cdecl *DemangleNameFn) (UnmanagedSymPrv*, wchar_t*, size_t, wchar_t**, size_t*);
bool DemumbleDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
);
bool LLVMItaniumDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
);
bool LLVMMicrosoftDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
);
bool UndecorateSymbolDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
);
const DemangleNameFn Demanglers[] = {
DemumbleDemangleName, // Undecorate name using demumble library
LLVMItaniumDemangleName, // Undecorate name using llvm::itaniumDemangle library
LLVMMicrosoftDemangleName, // Undecorate name using llvm::microsoftDemangle library
UndecorateSymbolDemangleName // Undecorate name using UnDecorateSymbolNameW library
};
================================================
FILE: ClrPhlib/resource.h
================================================
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by app.rc
================================================
FILE: ClrPhlib/src/managed/NativeFile.cpp
================================================
#include <NativeFile.h>
#include <ClrPhLib.h>
#include <phconfig.h>
#include <vcclr.h>
#include <bcrypt.h>
using namespace Dependencies;
using namespace ClrPh;
using namespace System::Text;
static bool isCurrentProcessWow64 = CLRPH_ARCH::WOW64 == Phlib::GetClrPhArch();
static PVOID FsRedirectionValue = NULL;
#define WITH_WOW64_FS_REDIRECTION_DISABLED(action) do { \
DisableWow64FsRedirection(); \
action \
RevertWow64FsRedirection(); \
} while (false)
bool NativeFile::DisableWow64FsRedirection()
{
if (!isCurrentProcessWow64)
return true;
BOOL bWow64RedirectionDisabled = Wow64DisableWow64FsRedirection(
&FsRedirectionValue
);
return (bWow64RedirectionDisabled == TRUE);
}
bool NativeFile::RevertWow64FsRedirection()
{
if (!isCurrentProcessWow64)
return true;
BOOL bWow64RedirectionReverted = Wow64RevertWow64FsRedirection(
FsRedirectionValue
);
return (bWow64RedirectionReverted == TRUE);
}
bool NativeFile::Exists(_In_ String^ Path)
{
return NativeFile::Exists(Path, false);
}
bool NativeFile::Exists(_In_ String^ Path, bool IsFolder)
{
bool bFileExists = false;
pin_ptr<const wchar_t> RawPath = PtrToStringChars(Path);
WITH_WOW64_FS_REDIRECTION_DISABLED({
DWORD FileAttributes = GetFileAttributes(RawPath);
//Console::WriteLine("FileAttributes: {0:x}", FileAttributes);
bFileExists = (FileAttributes != INVALID_FILE_ATTRIBUTES);
if (!IsFolder)
{
bFileExists &= !(FileAttributes & FILE_ATTRIBUTE_DIRECTORY);
}
});
return bFileExists;
}
void NativeFile::Copy(_In_ String^ sourceFileName, _In_ String^ destFileName)
{
bool bFileExists = false;
PVOID OldRedirectionValue = NULL;
BOOLEAN isWow64 = PhIsExecutingInWow64();
pin_ptr<const wchar_t> RawSourceFilepath = PtrToStringChars(sourceFileName);
pin_ptr<const wchar_t> RawDestFilepath = PtrToStringChars(destFileName);
WITH_WOW64_FS_REDIRECTION_DISABLED({
CopyFile(
RawSourceFilepath,
RawDestFilepath,
false
);
});
}
String^ NativeFile::GetPartialHashFile(_In_ String^ Path, _In_ size_t FileSize)
{
bool read_success = false;
bool success = false;
void* hash = NULL;
size_t hash_size = 0;
HANDLE fileHandle = INVALID_HANDLE_VALUE;
PVOID fileBuffer = NULL;
ULONG FileSizeRead = 0;
String^ PartialHash;
pin_ptr<const wchar_t> RawPath = PtrToStringChars(Path);
WITH_WOW64_FS_REDIRECTION_DISABLED({
fileHandle = CreateFile(
RawPath,
FILE_GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
});
if ((INVALID_HANDLE_VALUE == fileHandle))
goto CleanupExit;
if (!(fileBuffer = malloc(FileSize)))
goto CleanupExit;
if (!ReadFile(
fileHandle,
fileBuffer,
(DWORD) FileSize,
&FileSizeRead,
NULL
))
goto CleanupExit;
if (FileSizeRead != FileSize)
goto CleanupExit;
// hash it
if (!HashBuffer((uint8_t *)fileBuffer, FileSize, BCRYPT_SHA256_ALGORITHM, &hash, &hash_size))
goto CleanupExit;
// Convert to hex string
PartialHash = GetHexString((uint8_t *)hash, hash_size);
success = TRUE;
CleanupExit:
if (fileBuffer)
free(fileBuffer);
if (fileHandle)
CloseHandle(fileHandle);
if (hash)
free(hash);
if (!success)
{
return gcnew String("");
}
return PartialHash;
}
bool NativeFile::HashBuffer(_In_ uint8_t *Buffer, _In_ size_t BufferSize, _In_ wchar_t *HASH_ALGORITHM, _Outptr_ void **Hash, _Out_ size_t *HashSize)
{
NTSTATUS status;
BCRYPT_ALG_HANDLE hashAlgHandle = NULL;
BCRYPT_HASH_HANDLE hashHandle = NULL;
PVOID hash = NULL;
PVOID hashObject = NULL;
ULONG hashObjectSize = 0;
ULONG hashSize = 0;
ULONG querySize = 0;
*Hash = NULL;
*HashSize = 0;
bool success = false;
if (!NT_SUCCESS(status = BCryptOpenAlgorithmProvider(&hashAlgHandle, HASH_ALGORITHM, NULL, 0)))
goto CleanupExit;
if (!NT_SUCCESS(status = BCryptGetProperty(hashAlgHandle, BCRYPT_OBJECT_LENGTH,
(PUCHAR)&hashObjectSize, sizeof(ULONG), &querySize, 0)))
goto CleanupExit;
if (!NT_SUCCESS(status = BCryptGetProperty(hashAlgHandle, BCRYPT_HASH_LENGTH, (PUCHAR)&hashSize,
sizeof(ULONG), &querySize, 0)))
goto CleanupExit;
if (!(hashObject = malloc(hashObjectSize)))
goto CleanupExit;
if (!(hash = malloc(hashSize)))
goto CleanupExit;
if (!NT_SUCCESS(status = BCryptCreateHash(
hashAlgHandle,
&hashHandle,
(PUCHAR)hashObject,
hashObjectSize,
NULL,
0,
0
)))
goto CleanupExit;
if (!NT_SUCCESS(status = BCryptHashData(hashHandle, (PUCHAR)Buffer, (ULONG)BufferSize, 0)))
goto CleanupExit;
if (!NT_SUCCESS(status = BCryptFinishHash(hashHandle, (PUCHAR)hash, hashSize, 0)))
goto CleanupExit;
*Hash = hash;
*HashSize = hashSize;
success = true;
CleanupExit:
if (!success)
{
if (hash)
free(hash);
}
if (hashHandle)
BCryptDestroyHash(hashHandle);
if (hashAlgHandle)
BCryptCloseAlgorithmProvider(hashAlgHandle, 0);
if (hashObject)
free(hashObject);
return success;
}
String^ NativeFile::GetHexString(_In_ uint8_t *Buffer, _In_ size_t BufferSize)
{
ASCIIEncoding AsciiDecoder;
array<unsigned char> ^hexBuffer = gcnew array<unsigned char>(2 * (int)BufferSize);
for (ULONG i = 0; i < BufferSize; i++)
{
char hexNumber[2] = {0};
sprintf(hexNumber, "%02X", ((unsigned char*)Buffer)[i]);
hexBuffer[2*i] = hexNumber[0];
hexBuffer[2*i + 1] = hexNumber[1];
}
return AsciiDecoder.GetString(hexBuffer, 0, 2 * (int)BufferSize);
}
================================================
FILE: ClrPhlib/src/managed/PE.cpp
================================================
#include <ClrPhlib.h>
#include <UnmanagedPh.h>
using namespace Dependencies;
using namespace System::Text;
using namespace ClrPh;
using namespace Runtime::InteropServices;
PE::PE(
_In_ String ^ Filepath
)
{
this->m_Impl = new UnmanagedPE();
this->Filepath = gcnew String(Filepath);
this->LoadSuccessful = false;
this->m_ExportsInit = false;
this->m_ImportsInit = false;
}
PE::~PE()
{
Unload();
delete m_Impl;
}
PE::!PE() {
Unload();
delete m_Impl;
}
bool PE::Load()
{
// Load PE as mapped section
wchar_t* PvFilepath = (wchar_t*)(Marshal::StringToHGlobalUni(Filepath)).ToPointer();
this->LoadSuccessful = m_Impl->LoadPE(PvFilepath);
Marshal::FreeHGlobal(IntPtr((void*)PvFilepath));
if (!LoadSuccessful) {
return false;
}
// Parse PE
LoadSuccessful &= InitProperties();
if (!LoadSuccessful) {
m_Impl->UnloadPE();
return false;
}
return LoadSuccessful;
}
void PE::Unload()
{
if (LoadSuccessful)
m_Impl->UnloadPE();
}
bool PE::InitProperties()
{
LARGE_INTEGER time;
SYSTEMTIME systemTime;
PH_MAPPED_IMAGE PvMappedImage = m_Impl->m_PvMappedImage;
Properties = gcnew PeProperties();
Properties->Machine = PvMappedImage.NtHeaders->FileHeader.Machine;
Properties->Magic = m_Impl->m_PvMappedImage.Magic;
Properties->Checksum = PvMappedImage.NtHeaders->OptionalHeader.CheckSum;
Properties->CorrectChecksum = (Properties->Checksum == PhCheckSumMappedImage(&PvMappedImage));
RtlSecondsSince1970ToTime(PvMappedImage.NtHeaders->FileHeader.TimeDateStamp, &time);
PhLargeIntegerToLocalSystemTime(&systemTime, &time);
Properties->Time = gcnew DateTime (systemTime.wYear, systemTime.wMonth, systemTime.wDay, systemTime.wHour, systemTime.wMinute, systemTime.wSecond, systemTime.wMilliseconds, DateTimeKind::Local);
if (PvMappedImage.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
{
PIMAGE_OPTIONAL_HEADER32 OptionalHeader = (PIMAGE_OPTIONAL_HEADER32) &PvMappedImage.NtHeaders->OptionalHeader;
Properties->ImageBase = (Int64) OptionalHeader->ImageBase;
Properties->SizeOfImage = OptionalHeader->SizeOfImage;
Properties->EntryPoint = (Int64) OptionalHeader->AddressOfEntryPoint;
}
else
{
PIMAGE_OPTIONAL_HEADER64 OptionalHeader = (PIMAGE_OPTIONAL_HEADER64)&PvMappedImage.NtHeaders->OptionalHeader;
Properties->ImageBase = (Int64)OptionalHeader->ImageBase;
Properties->SizeOfImage = OptionalHeader->SizeOfImage;
Properties->EntryPoint = (Int64)OptionalHeader->AddressOfEntryPoint;
}
Properties->Subsystem = PvMappedImage.NtHeaders->OptionalHeader.Subsystem;
Properties->SubsystemVersion = gcnew Tuple<Int16, Int16>(
PvMappedImage.NtHeaders->OptionalHeader.MajorSubsystemVersion,
PvMappedImage.NtHeaders->OptionalHeader.MinorSubsystemVersion);
Properties->Characteristics = PvMappedImage.NtHeaders->FileHeader.Characteristics;
Properties->DllCharacteristics = PvMappedImage.NtHeaders->OptionalHeader.DllCharacteristics;
Properties->FileSize = PvMappedImage.Size;
return true;
}
Collections::Generic::List<PeExport^> ^ PE::GetExports()
{
if (m_ExportsInit)
return m_Exports;
m_ExportsInit = true;
m_Exports = gcnew Collections::Generic::List<PeExport^>();
if (!LoadSuccessful)
return m_Exports;
if (NT_SUCCESS(PhGetMappedImageExports(&m_Impl->m_PvExports, &m_Impl->m_PvMappedImage)))
{
for (size_t Index = 0; Index < m_Impl->m_PvExports.NumberOfEntries; Index++)
{
PeExport^ exp = PeExport::FromMapimg(*m_Impl, Index);
if (exp)
{
m_Exports->Add(exp);
}
}
}
return m_Exports;
}
Collections::Generic::List<PeImportDll^> ^ PE::GetImports()
{
if (m_ImportsInit)
return m_Imports;
m_ImportsInit = true;
m_Imports = gcnew Collections::Generic::List<PeImportDll^>();
if (!LoadSuccessful)
return m_Imports;
// Standard Imports
if (NT_SUCCESS(PhGetMappedImageImports(&m_Impl->m_PvImports, &m_Impl->m_PvMappedImage)))
{
for (size_t IndexDll = 0; IndexDll< m_Impl->m_PvImports.NumberOfDlls; IndexDll++)
{
m_Imports->Add(gcnew PeImportDll(&m_Impl->m_PvImports, IndexDll));
}
}
// Delayed Imports
if (NT_SUCCESS(PhGetMappedImageDelayImports(&m_Impl->m_PvDelayImports, &m_Impl->m_PvMappedImage)))
{
for (size_t IndexDll = 0; IndexDll< m_Impl->m_PvDelayImports.NumberOfDlls; IndexDll++)
{
m_Imports->Add(gcnew PeImportDll(&m_Impl->m_PvDelayImports, IndexDll));
}
}
return m_Imports;
}
String^ PE::GetManifest()
{
if (!LoadSuccessful)
return gcnew String("");
// Extract embedded manifest
INT rawManifestLen;
BYTE* rawManifest;
if (!m_Impl->GetPeManifest(&rawManifest, &rawManifestLen))
return gcnew String("");
// Converting to wchar* and passing it to a C#-recognized String object
UTF8Encoding Utf8Decoder;
array<unsigned char> ^buffer = gcnew array<unsigned char>(rawManifestLen + 1);
for (int i = 0; i < rawManifestLen; i++)
{
buffer[i] = rawManifest[i];
}
buffer[rawManifestLen] = 0;
return Utf8Decoder.GetString(buffer, 0, rawManifestLen);
}
bool PE::IsWow64Dll()
{
return ((Properties->Machine & 0xffff ) == IMAGE_FILE_MACHINE_I386);
}
bool PE::IsArm32Dll()
{
return ((Properties->Machine & 0xffff) == IMAGE_FILE_MACHINE_ARMNT);
}
String^ PE::GetProcessor()
{
if ((Properties->Machine & 0xffff) == IMAGE_FILE_MACHINE_I386)
return gcnew String("x86");
if ((Properties->Machine & 0xffff) == IMAGE_FILE_MACHINE_ARMNT)
return gcnew String("arm");
if ((Properties->Machine & 0xffff) == IMAGE_FILE_MACHINE_ARM64)
return gcnew String("arm64");
return gcnew String("unknown");
}
================================================
FILE: ClrPhlib/src/managed/PeExport.cpp
================================================
#include <ClrPhlib.h>
#include <UnmanagedPh.h>
using namespace Dependencies;
using namespace ClrPh;
PeExport::PeExport(
)
{
}
PeExport^ PeExport::FromMapimg (
_In_ const UnmanagedPE &refPe,
_In_ size_t Index
)
{
PH_MAPPED_IMAGE_EXPORT_ENTRY exportEntry;
PH_MAPPED_IMAGE_EXPORT_FUNCTION exportFunction;
PeExport^ exp = nullptr;
if (
NT_SUCCESS(PhGetMappedImageExportEntry((PPH_MAPPED_IMAGE_EXPORTS)&refPe.m_PvExports, (ULONG) Index, &exportEntry)) &&
NT_SUCCESS(PhGetMappedImageExportFunction((PPH_MAPPED_IMAGE_EXPORTS)&refPe.m_PvExports, NULL, exportEntry.Ordinal, &exportFunction))
)
{
exp = gcnew PeExport();
exp->Ordinal = exportEntry.Ordinal;
exp->ExportByOrdinal = (exportEntry.Name == nullptr);
exp->Name = gcnew String(exportEntry.Name);
exp->ForwardedName = gcnew String(exportFunction.ForwardedName);
if (exportEntry.Name == nullptr)
exp->VirtualAddress = (Int64)exportFunction.Function;
exp->VirtualAddress = (Int64) exportFunction.Function;
}
return exp;
}
PeExport::PeExport(
_In_ const PeExport ^ other
)
{
this->Ordinal = Ordinal;
this->ExportByOrdinal = ExportByOrdinal;
this->Name = String::Copy(other->Name);
this->ForwardedName = String::Copy(other->ForwardedName);
this->VirtualAddress = other->VirtualAddress;
}
PeExport::~PeExport()
{
}
================================================
FILE: ClrPhlib/src/managed/PeImport.cpp
================================================
#include <ClrPhlib.h>
#include <UnmanagedPh.h>
using namespace Dependencies;
using namespace ClrPh;
PeImport::PeImport(
_In_ const PPH_MAPPED_IMAGE_IMPORT_DLL importDll,
_In_ size_t Index
)
{
PH_MAPPED_IMAGE_IMPORT_ENTRY importEntry;
if (NT_SUCCESS(PhGetMappedImageImportEntry((PPH_MAPPED_IMAGE_IMPORT_DLL) importDll, (ULONG)Index, &importEntry)))
{
this->Hint = importEntry.NameHint;
this->Ordinal = importEntry.Ordinal;
this->DelayImport = (importDll->Flags) & PH_MAPPED_IMAGE_DELAY_IMPORTS;
this->Name = gcnew String(importEntry.Name);
this->ModuleName = gcnew String(importDll->Name);
this->ImportByOrdinal = (importEntry.Name == nullptr);
}
}
PeImport::PeImport(
_In_ const PeImport ^ other
)
{
this->Hint = other->Hint;
this->Ordinal = other->Ordinal;
this->DelayImport = other->DelayImport;
this->Name = String::Copy(other->Name);
this->ModuleName = String::Copy(other->ModuleName);
this->ImportByOrdinal = other->ImportByOrdinal;
}
PeImport::~PeImport()
{
}
PeImportDll::PeImportDll(
_In_ const PPH_MAPPED_IMAGE_IMPORTS &PvMappedImports,
_In_ size_t ImportDllIndex
)
: ImportDll (new PH_MAPPED_IMAGE_IMPORT_DLL)
{
ImportList = gcnew Collections::Generic::List<PeImport^>();
if (!NT_SUCCESS(PhGetMappedImageImportDll(PvMappedImports, (ULONG)ImportDllIndex, ImportDll)))
{
Flags = 0;
Name = gcnew String("## PeImportDll error: Invalid DllName ##");
NumberOfEntries = 0;
return;
}
Flags = ImportDll->Flags;
Name = gcnew String(ImportDll->Name);
NumberOfEntries = ImportDll->NumberOfEntries;
for (size_t IndexImport = 0; IndexImport < (size_t) NumberOfEntries; IndexImport++)
{
ImportList->Add(gcnew PeImport(ImportDll, IndexImport));
}
}
PeImportDll::~PeImportDll()
{
delete ImportDll;
}
PeImportDll::!PeImportDll()
{
delete ImportDll;
}
PeImportDll::PeImportDll(
_In_ const PeImportDll ^ other
)
: ImportDll(new PH_MAPPED_IMAGE_IMPORT_DLL)
{
ImportList = gcnew Collections::Generic::List<PeImport^>();
memcpy(ImportDll, other->ImportDll, sizeof(PH_MAPPED_IMAGE_IMPORT_DLL));
Flags = other->Flags;
Name = String::Copy(other->Name);
NumberOfEntries = other->NumberOfEntries;
for (size_t IndexImport = 0; IndexImport < (size_t)NumberOfEntries; IndexImport++)
{
ImportList->Add(gcnew PeImport(other->ImportList[(int) IndexImport]));
}
}
bool PeImportDll::IsDelayLoad()
{
return this->Flags & PH_MAPPED_IMAGE_DELAY_IMPORTS;
}
================================================
FILE: ClrPhlib/src/managed/PhSymbolProvider.cpp
================================================
#include <ClrPhlib.h>
#include <UnmanagedPh.h>
#include <ClrPhSymbolProvider.h>
using namespace Dependencies;
using namespace ClrPh;
using namespace Runtime::InteropServices;
PhSymbolProvider::PhSymbolProvider()
:m_Impl(UnmanagedSymPrv::Create())
{
}
PhSymbolProvider::~PhSymbolProvider()
{
if (m_Impl) {
delete m_Impl;
}
}
PhSymbolProvider::!PhSymbolProvider()
{
if (m_Impl) {
delete m_Impl;
}
}
String^ PhSymbolProvider::UndecorateNameDemumble(
_In_ String ^DecoratedName
)
{
return UndecorateNamePrv(DecoratedName, DemumbleDemangleName);
}
String^ PhSymbolProvider::UndecorateNameLLVMItanium(_In_ String ^DecoratedName)
{
return UndecorateNamePrv(DecoratedName, LLVMItaniumDemangleName);
}
String^ PhSymbolProvider::UndecorateNameLLVMMicrosoft(_In_ String ^DecoratedName)
{
return UndecorateNamePrv(DecoratedName, LLVMMicrosoftDemangleName);
}
String^ PhSymbolProvider::UndecorateNamePh(_In_ String ^DecoratedName)
{
return UndecorateNamePrv(DecoratedName, UndecorateSymbolDemangleName);
}
Tuple<CLRPH_DEMANGLER, String^>^ PhSymbolProvider::UndecorateName(_In_ String ^DecoratedName)
{
String ^ManagedUndName;
wchar_t* UndecoratedName = NULL;
size_t UndecoratedNameLen = 0;
CLRPH_DEMANGLER Demangler = CLRPH_DEMANGLER::None;
if (!m_Impl || !DecoratedName || DecoratedName->Length == 0) {
return gcnew Tuple<CLRPH_DEMANGLER, String^> (Demangler, gcnew String(""));
}
wchar_t* PvDecoratedName = (wchar_t*)(Marshal::StringToHGlobalUni(DecoratedName)).ToPointer();
size_t PvDecoratedNameLen = wcslen(PvDecoratedName);
if (m_Impl->DemangleName(
PvDecoratedName,
PvDecoratedNameLen,
&UndecoratedName,
&UndecoratedNameLen,
&Demangler
))
{
ManagedUndName = gcnew String(UndecoratedName);
}
else
{
ManagedUndName = gcnew String("");
}
if (UndecoratedName)
{
free(UndecoratedName);
}
if (PvDecoratedName)
{
Marshal::FreeHGlobal(IntPtr((void*)PvDecoratedName));
}
return gcnew Tuple<CLRPH_DEMANGLER, String^>(Demangler, ManagedUndName);
}
String^ PhSymbolProvider::UndecorateNamePrv(
_In_ String ^DecoratedName,
_In_ DemangleNameFn Demangler
)
{
String ^ManagedUndName;
wchar_t* UndecoratedName = NULL;
size_t UndecoratedNameLen = 0;
if (!m_Impl || DecoratedName->Length == 0) {
return gcnew String("");
}
wchar_t* PvDecoratedName = (wchar_t*)(Marshal::StringToHGlobalUni(DecoratedName)).ToPointer();
size_t PvDecoratedNameLen = wcslen(PvDecoratedName);
if (Demangler(
this->m_Impl,
PvDecoratedName,
PvDecoratedNameLen,
&UndecoratedName,
&UndecoratedNameLen
))
{
ManagedUndName = gcnew String(UndecoratedName);
}
else
{
ManagedUndName = gcnew String("");
}
if (UndecoratedName)
{
free(UndecoratedName);
}
if (PvDecoratedName)
{
Marshal::FreeHGlobal(IntPtr((void*)PvDecoratedName));
}
return ManagedUndName;
}
================================================
FILE: ClrPhlib/src/managed/Phlib.cpp
================================================
#include <ClrPhlib.h>
#include <UnmanagedPh.h>
#include <ApiSet.h>
#include <phnative.h>
#include <ntpsapi.h>
using namespace Dependencies;
using namespace ClrPh;
// Private : build the known dlls list
List<String^>^ BuildKnownDllList(_In_ bool Wow64Dlls);
static bool bInitializedPhLib = false;
bool Phlib::InitializePhLib()
{
if (!bInitializedPhLib)
{
bInitializedPhLib = NT_SUCCESS(PhInitializePhLib());
}
KnownDll64List = BuildKnownDllList(false);
KnownDll32List = BuildKnownDllList(true);
return bInitializedPhLib;
}
BOOLEAN NTAPI PhEnumDirectoryObjectsCallback(
_In_ PPH_STRINGREF Name,
_In_ PPH_STRINGREF TypeName,
_In_opt_ PVOID Context
)
{
static PH_STRINGREF SectionTypeName = PH_STRINGREF_INIT(L"Section");
List<String^>^ ReturnList = ((List<String^>^*) Context)[0];
if (!PhCompareStringRef(&SectionTypeName, TypeName, TRUE)) {
ReturnList->Add(gcnew String(Name->Buffer));
}
return TRUE;
}
List<String^>^ BuildKnownDllList(_In_ bool Wow64Dlls)
{
List<String^>^ ReturnList = gcnew List<String^>();
HANDLE KnownDllDir = INVALID_HANDLE_VALUE;
OBJECT_ATTRIBUTES oa;
UNICODE_STRING name;
NTSTATUS status;
const PWCHAR KnownDllObjectName = (Wow64Dlls) ? L"\\KnownDlls32" : L"\\KnownDlls";
name.Length = (USHORT) wcslen(KnownDllObjectName) * sizeof(wchar_t);
name.MaximumLength = (USHORT) wcslen(KnownDllObjectName) * sizeof(wchar_t);
name.Buffer = KnownDllObjectName;
InitializeObjectAttributes(
&oa,
&name,
0,
NULL,
NULL
);
status = NtOpenDirectoryObject(
&KnownDllDir,
DIRECTORY_QUERY,
&oa
);
if (!NT_SUCCESS(status)) {
return ReturnList;
}
status = PhEnumDirectoryObjects(
KnownDllDir,
(PPH_ENUM_DIRECTORY_OBJECTS) PhEnumDirectoryObjectsCallback,
(PVOID) &ReturnList
);
if (!NT_SUCCESS(status)) {
return ReturnList;
}
ReturnList->Sort();
return ReturnList;
}
List<String^>^ Phlib::GetKnownDlls(_In_ bool Wow64Dlls)
{
if (Wow64Dlls){
return Phlib::KnownDll32List;
}
return Phlib::KnownDll64List;
}
#ifdef __cplusplus
extern "C" {
#endif
PAPI_SET_NAMESPACE GetApiSetNamespace()
{
ULONG ReturnLength;
PROCESS_BASIC_INFORMATION ProcessInformation;
PAPI_SET_NAMESPACE apiSetMap = NULL;
// Retrieve PEB address
if (!NT_SUCCESS(NtQueryInformationProcess(
GetCurrentProcess(),
ProcessBasicInformation,
&ProcessInformation,
sizeof(PROCESS_BASIC_INFORMATION),
&ReturnLength
)))
{
return NULL;
}
// Parsing PEB structure and locating api set map
PPEB peb = static_cast<PPEB>(ProcessInformation.PebBaseAddress);
apiSetMap = static_cast<PAPI_SET_NAMESPACE>(peb->ApiSetMap);
return apiSetMap;
}
#ifdef __cplusplus
}
#endif
struct ApiSetSchemaImpl
{
static ApiSetSchema^ ParseApiSetSchema(API_SET_NAMESPACE const * apiSetMap);
private:
// private implementation of ApiSet schema parsing
static ApiSetSchema^ GetApiSetSchemaV2(API_SET_NAMESPACE_V2 const * map);
static ApiSetSchema^ GetApiSetSchemaV4(API_SET_NAMESPACE_V4 const * map);
static ApiSetSchema^ GetApiSetSchemaV6(API_SET_NAMESPACE_V6 const * map);
};
private ref class EmptyApiSetSchema sealed : ApiSetSchema
{
public:
List<KeyValuePair<String^, ApiSetTarget^>>^ GetAll() override { return gcnew List<KeyValuePair<String^, ApiSetTarget^>>(); }
ApiSetTarget^ Lookup(String^) override { return nullptr; }
};
private ref class V2V4ApiSetSchema sealed : ApiSetSchema
{
public:
List<KeyValuePair<String^, ApiSetTarget^>>^ const All = gcnew List<KeyValuePair<String^, ApiSetTarget^>>();
List<KeyValuePair<String^, ApiSetTarget^>>^ GetAll() override { return All; }
ApiSetTarget^ Lookup(String^ name) override
{
// TODO : check if ext- is not present on win7 and 8.1
if (!name->StartsWith("api-", System::StringComparison::CurrentCultureIgnoreCase))
return nullptr;
// Force lowercase name
name = name->ToLower();
// remove "api-" or "ext-" prefix
name = name->Substring(4);
// Note: The list is initially alphabetically sorted!!!
auto min = 0;
auto max = All->Count - 1;
while (min <= max)
{
auto const cur = (min + max) / 2;
auto pair = All[cur];
if (name->StartsWith(pair.Key, System::StringComparison::CurrentCultureIgnoreCase))
return pair.Value;
if (String::CompareOrdinal(name, pair.Key) < 0)
max = cur - 1;
else
min = cur + 1;
}
return nullptr;
}
};
ApiSetSchema^ ApiSetSchemaImpl::GetApiSetSchemaV2(API_SET_NAMESPACE_V2 const * const map)
{
auto const base = reinterpret_cast<ULONG_PTR>(map);
auto const schema = gcnew V2V4ApiSetSchema();
for (auto it = map->Array, eit = it + map->Count; it < eit; ++it)
{
// Retrieve DLLs names implementing the contract
auto const targets = gcnew ApiSetTarget();
auto const value_entry = reinterpret_cast<PAPI_SET_VALUE_ENTRY_V2>(base + it->DataOffset);
for (auto it2 = value_entry->Redirections, eit2 = it2 + value_entry->NumberOfRedirections; it2 < eit2; ++it2)
{
auto const value_buffer = reinterpret_cast<PWCHAR>(base + it2->ValueOffset);
auto const value = gcnew String(value_buffer, 0, it2->ValueLength / sizeof(WCHAR));
targets->Add(value);
}
// Retrieve api min-win contract name
auto const name_buffer = reinterpret_cast<PWCHAR>(base + it->NameOffset);
auto const name = gcnew String(name_buffer, 0, it->NameLength / sizeof(WCHAR));
// force storing lowercase variant for comparison
auto const lower_name = name->ToLower();
schema->All->Add(KeyValuePair<String^, ApiSetTarget^>(lower_name, targets));
}
return schema;
}
ApiSetSchema^ ApiSetSchemaImpl::GetApiSetSchemaV4(API_SET_NAMESPACE_V4 const * const map)
{
auto const base = reinterpret_cast<ULONG_PTR>(map);
auto const schema = gcnew V2V4ApiSetSchema();
for (auto it = map->Array, eit = it + map->Count; it < eit; ++it)
{
// Retrieve DLLs names implementing the contract
auto const targets = gcnew ApiSetTarget();
auto const value_entry = reinterpret_cast<PAPI_SET_VALUE_ENTRY_V4>(base + it->DataOffset);
for (auto it2 = value_entry->Redirections, eit2 = it2 + value_entry->NumberOfRedirections; it2 < eit2; ++it2)
{
auto const value_buffer = reinterpret_cast<PWCHAR>(base + it2->ValueOffset);
auto const value = gcnew String(value_buffer, 0, it2->ValueLength / sizeof(WCHAR));
targets->Add(value);
}
// Retrieve api min-win contract name
auto const name_buffer = reinterpret_cast<PWCHAR>(base + it->NameOffset);
auto const name = gcnew String(name_buffer, 0, it->NameLength / sizeof(WCHAR));
// force storing lowercase variant for comparison
auto const lower_name = name->ToLower();
schema->All->Add(KeyValuePair<String^, ApiSetTarget^>(lower_name, targets));
}
return schema;
}
private ref class V6ApiSetSchema sealed : ApiSetSchema
{
public:
List<KeyValuePair<String^, ApiSetTarget^>>^ const All = gcnew List<KeyValuePair<String^, ApiSetTarget^>>();
List<KeyValuePair<String^, ApiSetTarget^>>^ HashedAll = gcnew List<KeyValuePair<String^, ApiSetTarget^>>();
List<KeyValuePair<String^, ApiSetTarget^>>^ GetAll() override { return All; }
ApiSetTarget^ Lookup(String^ name) override
{
// Force lowercase name
name = name->ToLower();
// Note: The list is initially alphabetically sorted!!!
auto min = 0;
auto max = HashedAll->Count - 1;
while (min <= max)
{
auto const cur = (min + max) / 2;
auto pair = HashedAll[cur];
if (name->StartsWith(pair.Key, System::StringComparison::CurrentCultureIgnoreCase))
return pair.Value;
if (String::CompareOrdinal(name, pair.Key) < 0)
max = cur - 1;
else
min = cur + 1;
}
return nullptr;
}
};
ApiSetSchema^ ApiSetSchemaImpl::GetApiSetSchemaV6(API_SET_NAMESPACE_V6 const * const map)
{
auto const base = reinterpret_cast<ULONG_PTR>(map);
auto const schema = gcnew V6ApiSetSchema();
for (auto it = reinterpret_cast<PAPI_SET_NAMESPACE_ENTRY_V6>(map->EntryOffset + base), eit = it + map->Count; it < eit; ++it)
{
// Iterate over all the host dll for this contract
auto const targets = gcnew ApiSetTarget();
for (auto it2 = static_cast<_API_SET_VALUE_ENTRY_V6*const>(reinterpret_cast<PAPI_SET_VALUE_ENTRY_V6>(base + it->ValueOffset)), eit2 = it2 + it->ValueCount; it2 < eit2; ++it2)
{
// Retrieve DLLs name implementing the contract
auto const value_buffer = reinterpret_cast<PWCHAR>(base + it2->ValueOffset);
auto const value = gcnew String(value_buffer, 0, it2->ValueLength / sizeof(WCHAR));
targets->Add(value);
}
// Retrieve api min-win contract name
auto const name_buffer = reinterpret_cast<PWCHAR>(base + it->NameOffset);
auto const name = gcnew String(name_buffer, 0, it->NameLength / sizeof(WCHAR));
auto const hash_name = gcnew String(name_buffer, 0, it->HashedLength / sizeof(WCHAR));
// force storing lowercase variant for comparison
auto const lower_name = name->ToLower();
auto const lower_hash_name = hash_name->ToLower();
schema->All->Add(KeyValuePair<String^, ApiSetTarget^>(lower_name, targets));
schema->HashedAll->Add(KeyValuePair<String^, ApiSetTarget^>(lower_hash_name, targets));
}
return schema;
}
ApiSetSchema^ Phlib::GetApiSetSchema()
{
// Api set schema resolution adapted from https://github.com/zodiacon/WindowsInternals/blob/master/APISetMap/APISetMap.cpp
// References :
// * Windows Internals v7
// * @aionescu's slides on "Hooking Nirvana" (RECON 2015)
// * Quarkslab blog posts :
// https://blog.quarkslab.com/runtime-dll-name-resolution-apisetschema-part-i.html
// https://blog.quarkslab.com/runtime-dll-name-resolution-apisetschema-part-ii.html
return ApiSetSchemaImpl::ParseApiSetSchema(GetApiSetNamespace());
}
ApiSetSchema^ PE::GetApiSetSchema()
{
PH_MAPPED_IMAGE mappedImage = m_Impl->m_PvMappedImage;
for (auto n = 0u; n < mappedImage.NumberOfSections; ++n)
{
IMAGE_SECTION_HEADER const & section = mappedImage.Sections[n];
if (strncmp(".apiset", reinterpret_cast<char const*>(section.Name), IMAGE_SIZEOF_SHORT_NAME) == 0)
return ApiSetSchemaImpl::ParseApiSetSchema(reinterpret_cast<PAPI_SET_NAMESPACE>(PTR_ADD_OFFSET(mappedImage.ViewBase, section.PointerToRawData)));
}
return gcnew EmptyApiSetSchema();
}
ApiSetSchema^ ApiSetSchemaImpl::ParseApiSetSchema(API_SET_NAMESPACE const * const apiSetMap)
{
// Check the returned api namespace is correct
if (!apiSetMap)
return gcnew EmptyApiSetSchema();
switch (apiSetMap->Version)
{
case 2: // Win7
return GetApiSetSchemaV2(&apiSetMap->ApiSetNameSpaceV2);
case 4: // Win8.1
return GetApiSetSchemaV4(&apiSetMap->ApiSetNameSpaceV4);
case 6: // Win10
return GetApiSetSchemaV6(&apiSetMap->ApiSetNameSpaceV6);
default: // unsupported
return gcnew EmptyApiSetSchema();
}
}
================================================
FILE: ClrPhlib/src/unmanaged/UnmanagedPE.cpp
================================================
#include <ClrPhlib.h>
#include <UnmanagedPh.h>
#include <phnt_ntdef.h>
using namespace System;
using namespace Dependencies::ClrPh;
UnmanagedPE::UnmanagedPE()
:m_bImageLoaded(false)
{
memset(&m_PvMappedImage, 0, sizeof(PH_MAPPED_IMAGE));
}
UnmanagedPE::~UnmanagedPE()
{
UnloadPE();
}
bool UnmanagedPE::LoadPE(LPWSTR Filepath)
{
if (m_bImageLoaded)
{
PhUnloadMappedImage(&m_PvMappedImage);
}
memset(&m_PvMappedImage, 0, sizeof(PH_MAPPED_IMAGE));
m_bImageLoaded = NT_SUCCESS(PhLoadMappedImage(
Filepath,
NULL,
TRUE,
&m_PvMappedImage
));
return m_bImageLoaded;
}
void UnmanagedPE::UnloadPE()
{
if (m_bImageLoaded)
{
PhUnloadMappedImage(&m_PvMappedImage);
m_bImageLoaded = false;
}
}
bool UnmanagedPE::GetPeManifest(
_Out_ BYTE* *manifest,
_Out_ INT *manifestLen
)
{
PH_MAPPED_IMAGE_RESOURCES resources;
bool manifestFound = false;
if (!m_bImageLoaded)
return false;
if (!NT_SUCCESS(PhGetMappedImageResources(&resources, &m_PvMappedImage)))
return false;
*manifest = NULL;
*manifestLen = 0;
for (ULONG i = 0; i < resources.NumberOfEntries; i++)
{
PH_IMAGE_RESOURCE_ENTRY entry;
entry = resources.ResourceEntries[i];
if (entry.Type == (ULONG_PTR) RT_MANIFEST)
{
// Manifest entry is utf-8 only
*manifest = (BYTE*)entry.Data;
*manifestLen = entry.Size;
manifestFound = true;
}
// stops on first manifest found
if (manifestFound)
break;
}
PhFree(resources.ResourceEntries);
return manifestFound;
}
================================================
FILE: ClrPhlib/src/unmanaged/UnmanagedSymPrv.cpp
================================================
#include <UnmanagedSymPrv.h>
using namespace System;
using namespace Dependencies::ClrPh;
#define DBGHELP_RELPATH
VOID PvpGetDefaultPathForDbgHelp(
_Inout_ PWSTR DefaultDbgHelpPath
)
{
#if _WIN64
wsprintf((LPWSTR)DefaultDbgHelpPath, L"%s%s", _wgetenv(L"ProgramFiles"), L"\\Windows Kits\\10\\Debuggers\\x64\\dbghelp.dll");
#define DBGHELP_PATH _wgetenv(L"ProgramFiles") L"" DBGHELP_RELPATH
#else
if (PhIsExecutingInWow64())
{
wsprintf((LPWSTR)DefaultDbgHelpPath, L"%s%s", _wgetenv(L"ProgramFiles(x86)"), L"\\Windows Kits\\10\\Debuggers\\x86\\dbghelp.dll");
}
else
{
wsprintf((LPWSTR)DefaultDbgHelpPath, L"%s%s", _wgetenv(L"ProgramFiles"), L"\\Windows Kits\\10\\Debuggers\\x86\\dbghelp.dll");
}
#endif // _WIN64
}
/*!
@brief PhLoadLibrarySafe prevents the loader from searching in an unsafe
order by first requiring the loader try to load and resolve through
System32. Then upping the loading flags until the library is loaded.
@param[in] LibFileName - The file name of the library to load.
@return HMODULE to the library on success, null on failure.
*/
_Ret_maybenull_
PVOID
PhLoadLibrarySafe(
_In_ PCWSTR LibFileName
)
{
PVOID baseAddress;
//
// Force LOAD_LIBRARY_SEARCH_SYSTEM32. If the library file name is a fully
// qualified path this will succeed.
//
baseAddress = LoadLibraryExW(LibFileName,
NULL,
LOAD_LIBRARY_SEARCH_SYSTEM32);
if (baseAddress)
{
return baseAddress;
}
//
// Include the application directory now.
//
return LoadLibraryExW(LibFileName,
NULL,
LOAD_LIBRARY_SEARCH_SYSTEM32 |
LOAD_LIBRARY_SEARCH_APPLICATION_DIR);
}
VOID PvpLoadDbgHelpFromPath(
_In_ PWSTR DbgHelpPath
)
{
HMODULE dbghelpModule;
// try to load from windows kits installed on the machine
dbghelpModule = LoadLibrary(DbgHelpPath);
// try system32, and then current dir
if (!dbghelpModule)
{
dbghelpModule = (HMODULE) PhLoadLibrarySafe(L"dbghelp.dll");
}
// try to load symsrv.dll from the same folder as dbghelp.dll
if (dbghelpModule)
{
PPH_STRING fullDbghelpPath;
ULONG indexOfFileName;
PH_STRINGREF dbghelpFolder;
PPH_STRING symsrvPath;
fullDbghelpPath = PhGetDllFileName(dbghelpModule, &indexOfFileName);
if (fullDbghelpPath)
{
if (indexOfFileName != 0)
{
static PH_STRINGREF symsrvString = PH_STRINGREF_INIT(L"\\symsrv.dll");
dbghelpFolder.Buffer = fullDbghelpPath->Buffer;
dbghelpFolder.Length = indexOfFileName * sizeof(WCHAR);
symsrvPath = PhConcatStringRef2(&dbghelpFolder, &symsrvString);
LoadLibrary(symsrvPath->Buffer);
PhDereferenceObject(symsrvPath);
}
PhDereferenceObject(fullDbghelpPath);
}
PhSymbolProviderCompleteInitialization(dbghelpModule);
}
//else
//{
// dbghelpModule = LoadLibrary(L"dbghelp.dll");
//}
/*PhSymbolProviderCompleteInitialization(dbghelpModule);*/
}
BOOLEAN PvpLoadDbgHelp(
_Inout_ PPH_SYMBOL_PROVIDER *SymbolProvider
)
{
static UNICODE_STRING symbolPathVarName = RTL_CONSTANT_STRING(L"_NT_SYMBOL_PATH");
PPH_STRING symbolSearchPath;
PPH_SYMBOL_PROVIDER symbolProvider;
WCHAR buffer[MAX_PATH] = L"";
UNICODE_STRING symbolPathUs;
const wchar_t DefaultDbgHelpPath[MAX_PATH] = { 0 };
symbolPathUs.Buffer = buffer;
symbolPathUs.Length = sizeof(buffer) - sizeof(UNICODE_NULL);
symbolPathUs.MaximumLength = sizeof(buffer);
if (!PhSymbolProviderInitialization())
return FALSE;
PvpGetDefaultPathForDbgHelp((PWSTR)DefaultDbgHelpPath);
PvpLoadDbgHelpFromPath((PWSTR)DefaultDbgHelpPath);
symbolProvider = PhCreateSymbolProvider(NULL);
// Load symbol path from _NT_SYMBOL_PATH if configured by the user.
if (NT_SUCCESS(RtlQueryEnvironmentVariable_U(NULL, &symbolPathVarName, &symbolPathUs)))
{
symbolSearchPath = PhFormatString(L"SRV*%s*http://msdl.microsoft.com/download/symbols", symbolPathUs.Buffer);
}
else
{
symbolSearchPath = PhCreateString(L"SRV**http://msdl.microsoft.com/download/symbols");
}
PhSetSearchPathSymbolProvider(symbolProvider, symbolSearchPath->Buffer);
PhDereferenceObject(symbolSearchPath);
*SymbolProvider = symbolProvider;
return TRUE;
}
UnmanagedSymPrv* UnmanagedSymPrv::Create()
{
UnmanagedSymPrv *Instance = new UnmanagedSymPrv;
if (!PvpLoadDbgHelp(&Instance->m_SymbolProvider)) {
delete Instance;
return NULL;
}
return Instance;
}
================================================
FILE: ClrPhlib/src/unmanaged/demangle.cpp
================================================
#include <UnmanagedSymPrv.h>
#include <llvm/Demangle/Demangle.h>
#include <stdlib.h>
#using <System.dll>
extern "C" {
char* __cxa_demangle(const char* mangled_name,
char* buf,
size_t* n,
int* status);
}
#define DEMANGLER_DEBUGLOG_ON (false)
#define DEMANGLER_DEBUGLOG_CAT ("demangler")
#define DEMANGLER_DEBUGLOG_ONE (DemanglerDebugOneArg)
#define DEMANGLER_DEBUGLOG_TWO (DemanglerDebugTwoArg)
void DemanglerDebugOneArg(wchar_t *Format, wchar_t *Arg0)
{
if (!DEMANGLER_DEBUGLOG_ON)
return;
do
{
System::Diagnostics::Debug::WriteLine(
System::String::Format(
gcnew System::String(Format),
gcnew System::String(Arg0)
),
gcnew System::String(DEMANGLER_DEBUGLOG_CAT)
);
} while (false);
}
void DemanglerDebugTwoArg(wchar_t *Format, wchar_t *Arg0, wchar_t *Arg1)
{
if (!DEMANGLER_DEBUGLOG_ON)
return;
do
{
System::Diagnostics::Debug::WriteLine(
System::String::Format(
gcnew System::String(Format),
gcnew System::String(Arg0),
gcnew System::String(Arg1)
),
gcnew System::String(DEMANGLER_DEBUGLOG_CAT)
);
} while (false);
}
bool DemumbleDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
)
{
size_t NameLen;
int status;
size_t MbstowcsStatus = 0;
char *AsciiUndecoratedName = NULL;
char *DecoratedNameAscii = (char*)malloc(DecoratedNameLen + 1);
sprintf_s(DecoratedNameAscii, DecoratedNameLen + 1, "%ws", DecoratedName);
if ((!UndecoratedName) || (!UndecoratedNameLen)) {
return false;
}
*UndecoratedNameLen = 0;
NameLen = DecoratedNameLen;
AsciiUndecoratedName = __cxa_demangle(
DecoratedNameAscii,
NULL,
&NameLen,
&status
);
if (!status) {
*UndecoratedName = (wchar_t*)malloc(NameLen * sizeof(wchar_t) + sizeof(wchar_t));
mbstowcs_s(
&MbstowcsStatus,
*UndecoratedName,
NameLen,
AsciiUndecoratedName,
NameLen
);
*UndecoratedNameLen = NameLen * sizeof(wchar_t);
}
free(DecoratedNameAscii);
// UNIX-style error code
return status == 0;
}
bool LLVMItaniumDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
)
{
size_t NameLen;
int status;
size_t MbstowcsStatus = 0;
char *AsciiUndecoratedName = NULL;
char *DecoratedNameAscii = (char*)malloc(DecoratedNameLen + 1);
sprintf_s(DecoratedNameAscii, DecoratedNameLen + 1, "%ws", DecoratedName);
if ((!UndecoratedName) || (!UndecoratedNameLen)) {
return false;
}
*UndecoratedNameLen = 0;
NameLen = DecoratedNameLen;
AsciiUndecoratedName = llvm::itaniumDemangle(
DecoratedNameAscii,
nullptr,
&NameLen,
&status
);
if (!status) {
*UndecoratedName = (wchar_t*)malloc(NameLen * sizeof(wchar_t) + sizeof(wchar_t));
mbstowcs_s(
&MbstowcsStatus,
*UndecoratedName,
NameLen,
AsciiUndecoratedName,
NameLen
);
*UndecoratedNameLen = NameLen * sizeof(wchar_t);
}
free(DecoratedNameAscii);
// UNIX-style error code
return status == 0;
}
bool LLVMMicrosoftDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
)
{
size_t NameLen;
int status;
size_t MbstowcsStatus = 0;
char *AsciiUndecoratedName = NULL;
char *DecoratedNameAscii = (char*)malloc(DecoratedNameLen + 1);
sprintf_s(DecoratedNameAscii, DecoratedNameLen + 1, "%ws", DecoratedName);
if ((!UndecoratedName) || (!UndecoratedNameLen)) {
return false;
}
*UndecoratedNameLen = 0;
NameLen = DecoratedNameLen;
AsciiUndecoratedName = llvm::microsoftDemangle(
DecoratedNameAscii,
nullptr,
&NameLen,
&status
);
if (!status) {
*UndecoratedName = (wchar_t*)malloc(NameLen * sizeof(wchar_t) + sizeof(wchar_t));
mbstowcs_s(
&MbstowcsStatus,
*UndecoratedName,
NameLen,
AsciiUndecoratedName,
NameLen
);
*UndecoratedNameLen = NameLen * sizeof(wchar_t);
}
free(DecoratedNameAscii);
// UNIX-style error code
return status == 0;
}
bool UndecorateSymbolDemangleName(
_In_ UnmanagedSymPrv* obj,
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen
)
{
PPH_STRING PhUndecoratedName = NULL;
wchar_t* Undname = NULL;
if ((!UndecoratedName) || (!UndecoratedNameLen)) {
return false;
}
PhUndecoratedName = PhUndecorateNameW(
obj->m_SymbolProvider,
DecoratedName
);
if (!PhUndecoratedName)
{
return false;
}
if (!wcsncmp(PhUndecoratedName->Buffer, DecoratedName, PhUndecoratedName->Length))
{
PhDereferenceObject(PhUndecoratedName);
return false;
}
Undname = (wchar_t*)calloc(PhUndecoratedName->Length + sizeof(wchar_t), 1);
if (!Undname)
{
PhDereferenceObject(PhUndecoratedName);
return false;
}
memcpy(Undname, PhUndecoratedName->Buffer, PhUndecoratedName->Length);
*UndecoratedNameLen = PhUndecoratedName->Length;
*UndecoratedName = Undname;
PhDereferenceObject(PhUndecoratedName);
return true;
}
bool UnmanagedSymPrv::DemangleName(
_In_ wchar_t* DecoratedName,
_In_ size_t DecoratedNameLen,
_Out_ wchar_t** UndecoratedName,
_Out_ size_t* UndecoratedNameLen,
_Out_ Dependencies::ClrPh::CLRPH_DEMANGLER *Demangler
)
{
// try to undecorate GCC/LLVM symbols using demumble
if (DemumbleDemangleName(
this,
DecoratedName,
DecoratedNameLen,
UndecoratedName,
UndecoratedNameLen
)) {
*Demangler = Dependencies::ClrPh::CLRPH_DEMANGLER::Demumble;
DEMANGLER_DEBUGLOG_TWO(L"Demumble {0:s} -> {1:s}", DecoratedName, *UndecoratedName);
return true;
}
// try llvm-demangler. the heuristic is copied from .\llvm-7.0.0.src\lib\DebugInfo\Symbolize\Symbolize.cpp: LLVMSymbolizer::DemangleName
if (!_wcsnicmp(DecoratedName, L"_Z", 2))
{
if (LLVMItaniumDemangleName(
this,
DecoratedName,
DecoratedNameLen,
UndecoratedName,
UndecoratedNameLen
)) {
*Demangler = Dependencies::ClrPh::CLRPH_DEMANGLER::LLVMItanium;
DEMANGLER_DEBUGLOG_TWO(L"LLVM Itanium {0:s} -> {1:s}", DecoratedName, *UndecoratedName);
return true;
}
}
// try to undecorate MSVC symbols using UndecorateName
if (UndecorateSymbolDemangleName(
this,
DecoratedName,
DecoratedNameLen,
UndecoratedName,
UndecoratedNameLen
)) {
*Demangler = Dependencies::ClrPh::CLRPH_DEMANGLER::Microsoft;
DEMANGLER_DEBUGLOG_TWO(L"Microsoft {0:s} -> {1:s}", DecoratedName, *UndecoratedName);
return true;
}
// use llvm::microsoftDemangle as a last chance
if (LLVMMicrosoftDemangleName(
this,
DecoratedName,
DecoratedNameLen,
UndecoratedName,
UndecoratedNameLen
)) {
*Demangler = Dependencies::ClrPh::CLRPH_DEMANGLER::LLVMMicrosoft;
DEMANGLER_DEBUGLOG_TWO(L"LLVM Microsoft {0:s} -> {1:s}", DecoratedName, *UndecoratedName);
return true;
}
// Could not demangle name
*UndecoratedNameLen = 0;
*UndecoratedName = NULL;
*Demangler = Dependencies::ClrPh::CLRPH_DEMANGLER::None;
DEMANGLER_DEBUGLOG_ONE(L"Could not demangle \"{0:s}\" properly", DecoratedName);
return false;
}
================================================
FILE: Dependencies/App.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
================================================
FILE: Dependencies/Dependencies.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{5565A612-B250-4FE0-98DD-07C56916C194}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>Dependencies</RootNamespace>
<AssemblyName>Dependencies</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup>
<StartupObject>Dependencies.Program</StartupObject>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Appx|x86'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Appx|x64'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.dll</HintPath>
</Reference>
<Reference Include="Mono.Cecil.Mdb, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.Mdb.dll</HintPath>
</Reference>
<Reference Include="Mono.Cecil.Pdb, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.Pdb.dll</HintPath>
</Reference>
<Reference Include="Mono.Cecil.Rocks, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.Rocks.dll</HintPath>
</Reference>
<Reference Include="NDesk.Options, Version=0.2.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NDesk.Options.0.2.1\lib\NDesk.Options.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ClrPhlib\ClrPhlib.vcxproj">
<Project>{fc5ffcaf-982f-4a95-8fa6-2a95b1f7cdc8}</Project>
<Name>ClrPhlib</Name>
</ProjectReference>
<ProjectReference Include="..\DependenciesLib\DependenciesLib.csproj">
<Project>{4a459493-14fc-4c87-9254-60e0959535da}</Project>
<Name>DependenciesLib</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
================================================
FILE: Dependencies/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.IO;
using System.Linq;
using System.Diagnostics;
using NDesk.Options;
using Newtonsoft.Json;
using Dependencies.ClrPh;
using Mono.Cecil;
namespace Dependencies
{
interface IPrettyPrintable
{
void PrettyPrint();
}
/// <summary>
/// Printable KnownDlls object
/// </summary>
class NtKnownDlls : IPrettyPrintable
{
public NtKnownDlls()
{
x64 = Phlib.GetKnownDlls(false);
x86 = Phlib.GetKnownDlls(true);
}
public void PrettyPrint()
{
Console.WriteLine("[-] 64-bit KnownDlls : ");
foreach (String KnownDll in this.x64)
{
string System32Folder = Environment.GetFolderPath(Environment.SpecialFolder.System);
Console.WriteLine(" {0:s}\\{1:s}", System32Folder, KnownDll);
}
Console.WriteLine("");
Console.WriteLine("[-] 32-bit KnownDlls : ");
foreach (String KnownDll in this.x86)
{
string SysWow64Folder = Environment.GetFolderPath(Environment.SpecialFolder.SystemX86);
Console.WriteLine(" {0:s}\\{1:s}", SysWow64Folder, KnownDll);
}
Console.WriteLine("");
}
public List<String> x64;
public List<String> x86;
}
/// <summary>
/// Printable ApiSet schema object
/// </summary>
class NtApiSet : IPrettyPrintable
{
public NtApiSet()
{
Schema = Phlib.GetApiSetSchema();
}
public NtApiSet(PE ApiSetSchemaDll)
{
Schema = ApiSetSchemaDll.GetApiSetSchema();
}
public void PrettyPrint()
{
Console.WriteLine("[-] Api Sets Map : ");
foreach (var ApiSetEntry in this.Schema.GetAll())
{
ApiSetTarget ApiSetImpl = ApiSetEntry.Value;
string ApiSetName = ApiSetEntry.Key;
string ApiSetImplStr = (ApiSetImpl.Count > 0) ? String.Join(",", ApiSetImpl.ToArray()) : "";
Console.WriteLine("{0:s} -> [ {1:s} ]", ApiSetName, ApiSetImplStr);
}
Console.WriteLine("");
}
public ApiSetSchema Schema;
}
class PEManifest : IPrettyPrintable
{
public PEManifest(PE _Application)
{
Application = _Application;
Manifest = Application.GetManifest();
XmlManifest = null;
Exception = "";
if (Manifest.Length != 0)
{
try
{
// Use a memory stream to correctly handle BOM encoding for manifest resource
using (var stream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(Manifest)))
{
XmlManifest = SxsManifest.ParseSxsManifest(stream);
}
}
catch (System.Xml.XmlException e)
{
//Console.Error.WriteLine("[x] \"Malformed\" pe manifest for file {0:s} : {1:s}", Application.Filepath, PeManifest);
//Console.Error.WriteLine("[x] Exception : {0:s}", e.ToString());
XmlManifest = null;
Exception = e.ToString();
}
}
}
public void PrettyPrint()
{
Console.WriteLine("[-] Manifest for file : {0}", Application.Filepath);
if (Manifest.Length == 0)
{
Console.WriteLine("[x] No embedded pe manifest for file {0:s}", Application.Filepath);
return;
}
if (Exception.Length != 0)
{
Console.Error.WriteLine("[x] \"Malformed\" pe manifest for file {0:s} : {1:s}", Application.Filepath, Manifest);
Console.Error.WriteLine("[x] Exception : {0:s}", Exception);
return;
}
Console.WriteLine(XmlManifest);
}
public string Manifest;
public XDocument XmlManifest;
// stays private in order not end up in the json output
private PE Application;
private string Exception;
}
class PEImports : IPrettyPrintable
{
public PEImports(PE _Application)
{
Application = _Application;
Imports = Application.GetImports();
}
public void PrettyPrint()
{
Console.WriteLine("[-] Import listing for file : {0}", Application.Filepath);
foreach (PeImportDll DllImport in Imports)
{
Console.WriteLine("Import from module {0:s} :", DllImport.Name);
foreach (PeImport Import in DllImport.ImportList)
{
if (Import.ImportByOrdinal)
{
Console.Write("\t Ordinal_{0:d} ", Import.Ordinal);
}
else
{
Console.Write("\t Function {0:s}", Import.Name);
}
if (Import.DelayImport)
Console.WriteLine(" (Delay Import)");
else
Console.WriteLine("");
}
}
Console.WriteLine("[-] Import listing done");
}
public List<PeImportDll> Imports;
private PE Application;
}
class PEExports : IPrettyPrintable
{
public PEExports(PE _Application)
{
Application = _Application;
Exports = Application.GetExports();
}
public void PrettyPrint()
{
Console.WriteLine("[-] Export listing for file : {0}", Application.Filepath);
foreach (PeExport Export in Exports)
{
Console.WriteLine("Export {0:d} :", Export.Ordinal);
Console.WriteLine("\t Name : {0:s}", Export.Name);
Console.WriteLine("\t VA : 0x{0:X}", (int)Export.VirtualAddress);
if (Export.ForwardedName.Length > 0)
Console.WriteLine("\t ForwardedName : {0:s}", Export.ForwardedName);
}
Console.WriteLine("[-] Export listing done");
}
public List<PeExport> Exports;
private PE Application;
}
class SxsDependencies : IPrettyPrintable
{
public SxsDependencies(PE _Application)
{
Application = _Application;
SxS = SxsManifest.GetSxsEntries(Application);
}
public void PrettyPrint()
{
Console.WriteLine("[-] sxs dependencies for executable : {0}", Application.Filepath);
foreach (var entry in SxS)
{
if (entry.Path.Contains("???"))
{
Console.WriteLine(" [x] {0:s} : {1:s}", entry.Name, entry.Path);
}
else
{
Console.WriteLine(" [+] {0:s} : {1:s}", entry.Name, Path.GetFullPath(entry.Path));
}
}
}
public SxsEntries SxS;
private PE Application;
}
// Basic custom exception used to be able to differentiate between a "native" exception
// and one that has been already catched, processed and rethrown
public class RethrownException : Exception
{
public RethrownException(Exception e)
:base(e.Message, e.InnerException)
{
}
}
internal class PEModuleReferences : IPrettyPrintable
{
public PEModuleReferences(PE _Application)
{
Application = _Application;
try
{
var PeAssembly = AssemblyDefinition.ReadAssembly(Application.Filepath);
ModuleReferences = PeAssembly.Modules.SelectMany(m => m.ModuleReferences)
.Where(mr => mr.Name.Length > 0);
}
catch (BadImageFormatException)
{
}
}
public void PrettyPrint()
{
Console.WriteLine("[-] Module references listing for file : {0}", Application.Filepath);
foreach (ModuleReference moduleReference in ModuleReferences)
{
Console.WriteLine("-{0:s}", moduleReference.Name);
}
Console.WriteLine("[-] Import listing done");
}
private PE Application;
public IEnumerable<ModuleReference> ModuleReferences { get; private set; } = new List<ModuleReference>();
}
internal class PEAssemblyReferences : IPrettyPrintable
{
public PEAssemblyReferences(PE _Application)
{
Application = _Application;
try
{
var PeAssembly = AssemblyDefinition.ReadAssembly(Application.Filepath);
Resolver = new DefaultAssemblyResolver();
Resolver.AddSearchDirectory(Path.GetDirectoryName(_Application.Filepath));
AssemblyReferences = PeAssembly.Modules.SelectMany(m => m.AssemblyReferences);
}
catch (BadImageFormatException)
{
}
}
public void PrettyPrint()
{
Console.WriteLine("[-] Assembly references listing for file : {0}", Application.Filepath);
foreach (AssemblyNameReference assemblyReference in AssemblyReferences)
{
AssemblyDefinition definition;
try
{
definition = Resolver.Resolve(assemblyReference);
Console.WriteLine("-{0:s} : {1:s}", assemblyReference.Name, definition);
}
catch (AssemblyResolutionException)
{
Console.WriteLine("-{0:s}", assemblyReference.Name);
}
}
Console.WriteLine("[-] Import listing done");
}
private PE Application;
private DefaultAssemblyResolver Resolver;
public IEnumerable<AssemblyNameReference> AssemblyReferences { get; private set; } =
new List<AssemblyNameReference>();
}
class ImportDll
{
public string Name { get; private set; }
public static ImportDll From(PeImportDll i)
{
return new ImportDll
{
Name = i.Name
};
}
public static ImportDll From(ModuleReference m)
{
return new ImportDll
{
Name = m.Name
};
}
}
class PeDependencyItem : IPrettyPrintable
{
public PeDependencyItem(PeDependencies _Root, string _ModuleName, string ModuleFilepath, ModuleSearchStrategy Strategy, int Level)
{
Action action = () =>
{
Root = _Root;
ModuleName = _ModuleName;
Imports = new List<ImportDll>();
Filepath = ModuleFilepath;
SearchStrategy = Strategy;
RecursionLevel = Level;
DependenciesResolved = false;
FullDependencies = new List<PeDependencyItem>();
ResolvedImports = new List<PeDependencyItem>();
ModuleReferences = new List<ImportDll>();
AssemblyReferences = new List<AssemblyNameReference>();
};
SafeExecutor(action);
}
public void LoadPe()
{
Action action = () =>
{
if (Filepath != null)
{
PE Module = BinaryCache.LoadPe(Filepath);
Imports = Module.GetImports().Select(i => ImportDll.From(i)).ToList();
try
{
var PeAssembly = AssemblyDefinition.ReadAssembly(Filepath);
ModuleReferences = PeAssembly.Modules.SelectMany(m => m.ModuleReferences).Where(mr => mr.Name.Length > 0).Select(m => ImportDll.From(m)).ToList();
AssemblyReferences = PeAssembly.Modules.SelectMany(m => m.AssemblyReferences).ToList();
} catch (BadImageFormatException)
{
}
}
else
{
//Module = null;
}
};
SafeExecutor(action);
}
public void ResolveDependencies()
{
Action action = () =>
{
if (DependenciesResolved)
{
return;
}
List<PeDependencyItem> NewDependencies = new List<PeDependencyItem>();
foreach (ImportDll DllImport in Imports.Concat(ModuleReferences))
{
string ModuleFilepath = null;
ModuleSearchStrategy Strategy;
// Find Dll in "paths"
Tuple<ModuleSearchStrategy, PE> ResolvedModule = Root.ResolveModule(DllImport.Name);
Strategy = ResolvedModule.Item1;
if (Strategy != ModuleSearchStrategy.NOT_FOUND)
{
ModuleFilepath = ResolvedModule.Item2?.Filepath;
}
bool IsAlreadyCached = Root.isModuleCached(DllImport.Name, ModuleFilepath);
PeDependencyItem DependencyItem = Root.GetModuleItem(DllImport.Name, ModuleFilepath, Strategy, RecursionLevel + 1);
// do not add twice the same imported module
if (ResolvedImports.Find(ri => ri.ModuleName == DllImport.Name) == null)
{
ResolvedImports.Add(DependencyItem);
}
// Do not process twice a dependency. It will be displayed only once
if (!IsAlreadyCached)
{
Debug.WriteLine("[{0:d}] [{1:s}] Adding dep {2:s}", RecursionLevel, ModuleName, ModuleFilepath);
NewDependencies.Add(DependencyItem);
}
FullDependencies.Add(DependencyItem);
}
DependenciesResolved = true;
if ((Root.MaxRecursion > 0) && ((RecursionLevel + 1) >= Root.MaxRecursion))
{
return;
}
// Recursively resolve dependencies
foreach (var Dep in NewDependencies)
{
Dep.LoadPe();
Dep.ResolveDependencies();
}
};
SafeExecutor(action);
}
public bool IsNewModule()
{
return Root.VisitModule(this.ModuleName, this.Filepath);
}
public void PrettyPrint()
{
string Tabs = string.Concat(Enumerable.Repeat("| ", RecursionLevel));
Console.WriteLine("{0:s}├ {1:s} ({2:s}) : {3:s} ", Tabs, ModuleName, SearchStrategy.ToString(), Filepath);
foreach (var Dep in ResolvedImports)
{
bool NeverSeenModule = Dep.IsNewModule();
Dep.RecursionLevel = RecursionLevel + 1;
if (NeverSeenModule)
{
Dep.PrettyPrint();
}
else
{
Dep.BasicPrettyPrint();
}
}
}
public void BasicPrettyPrint(int? OverrideRecursionLevel = null)
{
int localRecursionLevel = RecursionLevel;
if (OverrideRecursionLevel != null)
{
localRecursionLevel = (int) OverrideRecursionLevel;
}
string Tabs = string.Concat(Enumerable.Repeat("| ", localRecursionLevel));
Console.WriteLine("{0:s}├ {1:s} ({2:s}) : {3:s} ", Tabs, ModuleName, SearchStrategy.ToString(), Filepath);
}
private void SafeExecutor(Action action)
{
SafeExecutor(() => { action(); return 0; });
}
private T SafeExecutor<T>(Func<T> action)
{
try
{
return action();
}
catch (RethrownException rex)
{
Console.Error.WriteLine(" - \"{0:s}\"", Filepath);
throw rex;
}
catch (Exception ex)
{
Console.Error.WriteLine("[!] Unhandled exception occured while processing \"{1:s}\"", RecursionLevel, Filepath);
Console.Error.WriteLine("Stacktrace:\n{0:s}\n", ex.StackTrace);
Console.Error.WriteLine("Modules backtrace:");
throw new RethrownException(ex);
}
finally
{
//
}
// return default(T);
}
// Json exportable
public string ModuleName;
public string Filepath;
public ModuleSearchStrategy SearchStrategy;
public List<PeDependencyItem> Dependencies
{
get { return IsNewModule() ? FullDependencies : new List<PeDependencyItem>(); }
}
// not Json exportable
protected List<PeDependencyItem> FullDependencies;
protected List<PeDependencyItem> ResolvedImports;
protected List<ImportDll> Imports;
protected List<AssemblyNameReference> AssemblyReferences;
protected List<ImportDll> ModuleReferences;
protected PeDependencies Root;
protected int RecursionLevel;
private bool DependenciesResolved;
}
class ModuleCacheKey : Tuple<string, string>
{
public ModuleCacheKey(string Name, string Filepath)
: base(Name, Filepath)
{
}
}
class ModuleEntries : Dictionary<ModuleCacheKey, PeDependencyItem>, IPrettyPrintable
{
public void PrettyPrint()
{
foreach (var item in this.Values.OrderBy(module => module.SearchStrategy))
{
Console.WriteLine("[{0:s}] {1:s} : {2:s} ", item.SearchStrategy.ToString(), item.ModuleName, item.Filepath);
}
}
}
class PeDependencies : IPrettyPrintable
{
public PeDependencies(PE Application, int recursion_depth)
{
string RootFilename = Path.GetFileName(Application.Filepath);
RootPe = Application;
SxsEntriesCache = SxsManifest.GetSxsEntries(RootPe);
ModulesCache = new ModuleEntries();
MaxRecursion = recursion_depth;
ModulesVisited = new Dictionary<ModuleCacheKey, bool>();
Root = GetModuleItem(RootFilename, Application.Filepath, ModuleSearchStrategy.ROOT, 0);
Root.LoadPe();
Root.ResolveDependencies();
}
public Tuple<ModuleSearchStrategy, PE> ResolveModule(string ModuleName)
{
return BinaryCache.ResolveModule(
RootPe,
ModuleName /*DllImport.Name*/
);
}
public bool isModuleCached(string ModuleName, string ModuleFilepath)
{
// Do not process twice the same item
ModuleCacheKey ModuleKey = new ModuleCacheKey(ModuleName, ModuleFilepath);
return ModulesCache.ContainsKey(ModuleKey);
}
public PeDependencyItem GetModuleItem(string ModuleName, string ModuleFilepath, ModuleSearchStrategy SearchStrategy, int RecursionLevel)
{
// Do not process twice the same item
ModuleCacheKey ModuleKey = new ModuleCacheKey(ModuleName, ModuleFilepath);
if (!ModulesCache.ContainsKey(ModuleKey))
{
ModulesCache[ModuleKey] = new PeDependencyItem(this, ModuleName, ModuleFilepath, SearchStrategy, RecursionLevel);
}
return ModulesCache[ModuleKey];
}
public void PrettyPrint()
{
ModulesVisited = new Dictionary<ModuleCacheKey, bool>();
Root.PrettyPrint();
}
public bool VisitModule(string ModuleName, string ModuleFilepath)
{
//ModuleCacheKey ModuleKey = new ModuleCacheKey(ModuleName, ModuleFilepath);
ModuleCacheKey ModuleKey = new ModuleCacheKey("", ModuleFilepath);
// do not visit recursively the same node (in order to prevent stack overflow)
if (ModulesVisited.ContainsKey(ModuleKey))
{
return false;
}
ModulesVisited[ModuleKey] = true;
return true;
}
public ModuleEntries GetModules
{
get {return ModulesCache;}
}
public PeDependencyItem Root;
public int MaxRecursion;
private PE RootPe;
private SxsEntries SxsEntriesCache;
private ModuleEntries ModulesCache;
private Dictionary<ModuleCacheKey, bool> ModulesVisited;
}
class Program
{
public static void PrettyPrinter(IPrettyPrintable obj)
{
obj.PrettyPrint();
}
public static void JsonPrinter(IPrettyPrintable obj)
{
JsonSerializerSettings Settings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
//PreserveReferencesHandling = PreserveReferencesHandling.Objects,
};
Console.WriteLine(JsonConvert.SerializeObject(obj, Formatting.Indented, Settings));
}
public static void DumpKnownDlls(Action<IPrettyPrintable> Printer)
{
NtKnownDlls KnownDlls = new NtKnownDlls();
Printer(KnownDlls);
}
public static void DumpApiSets(Action<IPrettyPrintable> Printer)
{
NtApiSet ApiSet = new NtApiSet();
Printer(ApiSet);
}
public static void DumpApiSets(PE Application, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
NtApiSet ApiSet = new NtApiSet(Application);
Printer(ApiSet);
}
public static void DumpManifest(PE Application, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
PEManifest Manifest = new PEManifest(Application);
Printer(Manifest);
}
public static void DumpSxsEntries(PE Application, Action<IPrettyPrintable> Printer, int recursion_depth= 0)
{
SxsDependencies SxsDeps = new SxsDependencies(Application);
Printer(SxsDeps);
}
public static void DumpExports(PE Pe, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
PEExports Exports = new PEExports(Pe);
Printer(Exports);
}
public static void DumpImports(PE Pe, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
PEImports Imports = new PEImports(Pe);
Printer(Imports);
}
public static void DumpAssemblyReferences(PE Pe, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
PEAssemblyReferences AssemblyReferences = new PEAssemblyReferences(Pe);
Printer(AssemblyReferences);
}
public static void DumpModuleReferences(PE Pe, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
PEModuleReferences ModuleReferences = new PEModuleReferences(Pe);
Printer(ModuleReferences);
}
public static void DumpDependencyChain(PE Pe, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
PeDependencies Deps = new PeDependencies(Pe, recursion_depth);
Printer(Deps);
}
public static void DumpModules(PE Pe, Action<IPrettyPrintable> Printer, int recursion_depth = 0)
{
if (Printer == JsonPrinter)
{
Console.Error.WriteLine("Json output is not currently supported when dumping the dependency chain.");
return;
}
PeDependencies Deps = new PeDependencies(Pe, recursion_depth);
Printer(Deps.GetModules);
}
public static void DumpUsage()
{
string Usage = String.Join(Environment.NewLine,
"Dependencies.exe : command line tool for dumping dependencies and various utilities.",
"",
"Usage : Dependencies.exe [OPTIONS] <FILE>",
"",
"Options :",
" -h -help : display this help",
" -json : activate json output.",
" -cache : load and use binary cache in order to prevent dll file locking.",
" -depth : limit recursion depth when analysing loaded modules or dependency chain. Default value is infinite.",
" -apisets : dump the system's ApiSet schema (api set dll -> host dll)",
" -apisetsdll : dump the ApiSet schema from apisetschema <FILE> (api set dll -> host dll)",
" -knowndll : dump all the system's known dlls (x86 and x64)",
" -manifest : dump <FILE> embedded manifest, if it exists.",
" -sxsentries : dump all of <FILE>'s sxs dependencies.",
" -imports : dump <FILE> imports",
" -exports : dump <FILE> exports",
" -modules : dump <FILE> resolved modules",
" -chain : dump <FILE> whole dependency chain"
);
Console.WriteLine(Usage);
}
static Action<IPrettyPrintable> GetObjectPrinter(bool export_as_json)
{
if (export_as_json)
return JsonPrinter;
return PrettyPrinter;
}
public delegate void DumpCommand(PE Application, Action<IPrettyPrintable> Printer, int recursion_depth=0);
static void Main(string[] args)
{
// always the first call to make
Phlib.InitializePhLib();
int recursion_depth = 0;
bool early_exit = false;
bool show_help = false;
bool export_as_json = false;
bool use_bin_cache = false;
DumpCommand command = null;
OptionSet opts = new OptionSet() {
{ "h|help", "show this message and exit", v => show_help = v != null },
{ "json", "Export results in json format", v => export_as_json = v != null },
{ "cache", "load and use binary cache to prevent dll file locking", v => use_bin_cache = v != null },
{ "d|depth=", "limit recursion depth when analysing loaded modules or dependency chain. Default value is infinite", (int v) => recursion_depth = v },
{ "knowndll", "List all known dlls", v => { DumpKnownDlls(GetObjectPrinter(export_as_json)); early_exit = true; } },
{ "apisets", "List apisets redirections", v => { DumpApiSets(GetObjectPrinter(export_as_json)); early_exit = true; } },
{ "apisetsdll", "List apisets redirections from apisetschema <FILE>", v => command = DumpApiSets },
{ "manifest", "show manifest information embedded in <FILE>", v => command = DumpManifest },
{ "sxsentries", "dump all of <FILE>'s sxs dependencies", v => command = DumpSxsEntries },
{ "imports", "dump <FILE> imports", v => command = DumpImports },
{ "exports", "dump <FILE> exports", v => command = DumpExports },
{ "assemblyrefs", "dump <FILE> assemblyrefs", v => command = DumpAssemblyReferences},
{ "modulerefs", "dump <FILE> modulerefs", v => command = DumpModuleReferences},
{ "chain", "dump <FILE> whole dependency chain", v => command = DumpDependencyChain },
{ "modules", "dump <FILE> resolved modules", v => command = DumpModules },
};
List<string> eps = opts.Parse(args);
if (early_exit)
return;
if ((show_help) || (args.Length == 0) || (command == null))
{
DumpUsage();
return;
}
BinaryCache.InitializeBinaryCache(use_bin_cache);
if (eps.Count == 0)
{
Console.Error.WriteLine("[x] Command {0:s} needs to have a PE <FILE> argument", command.Method.Name);
Console.Error.WriteLine("");
DumpUsage();
return;
}
String FileName = eps[0];
if (!NativeFile.Exists(FileName))
{
Console.Error.WriteLine("[x] Could not find file {0:s} on disk", FileName);
return;
}
Debug.WriteLine("[-] Loading file {0:s} ", FileName);
PE Pe = new PE(FileName);
if (!Pe.Load())
{
Console.Error.WriteLine("[x] Could not load file {0:s} as a PE", FileName);
return;
}
command(Pe, GetObjectPrinter(export_as_json), recursion_depth);
}
}
}
================================================
FILE: Dependencies/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Les informations générales relatives à un assembly dépendent de
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
// associées à un assembly.
[assembly: AssemblyTitle("Dependencies")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Dependencies")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
[assembly: ComVisible(false)]
// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
[assembly: Guid("5565a612-b250-4fe0-98dd-07c56916c194")]
// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
//
// Version principale
// Version secondaire
// Numéro de build
// Révision
//
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
// en utilisant '*', comme indiqué ci-dessous :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.10.0.0")]
[assembly: AssemblyFileVersion("1.10.0.0")]
================================================
FILE: Dependencies/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Mono.Cecil" version="0.11.4" targetFramework="net461" />
<package id="NDesk.Options" version="0.2.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net461" />
</packages>
================================================
FILE: Dependencies.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30114.105
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependenciesGui", "DependenciesGui\DependenciesGui.csproj", "{9232B9B6-F2BA-44A3-B8A6-A352777F632C}"
ProjectSection(ProjectDependencies) = postProject
{4A459493-14FC-4C87-9254-60E0959535DA} = {4A459493-14FC-4C87-9254-60E0959535DA}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClrPhlib", "ClrPhlib\ClrPhlib.vcxproj", "{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}"
ProjectSection(ProjectDependencies) = postProject
{477D0215-F252-41A1-874B-F27E3EA1ED17} = {477D0215-F252-41A1-874B-F27E3EA1ED17}
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1} = {BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}
{FC532FFF-EBB1-4601-B903-C09EFB79ECED} = {FC532FFF-EBB1-4601-B903-C09EFB79ECED}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dependencies", "Dependencies\Dependencies.csproj", "{5565A612-B250-4FE0-98DD-07C56916C194}"
ProjectSection(ProjectDependencies) = postProject
{4A459493-14FC-4C87-9254-60E0959535DA} = {4A459493-14FC-4C87-9254-60E0959535DA}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "third_party", "third_party", "{A2A2925A-0582-4436-9A12-8567E979A621}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "phlib", "third_party\phlib\phlib.vcxproj", "{477D0215-F252-41A1-874B-F27E3EA1ED17}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dragablz.net45", "third_party\Dragablz\Dragablz\Dragablz.net45.csproj", "{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demumble", "third_party\demumble\demumble.vcxproj", "{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependenciesLib", "DependenciesLib\DependenciesLib.csproj", "{4A459493-14FC-4C87-9254-60E0959535DA}"
ProjectSection(ProjectDependencies) = postProject
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8} = {FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm-demangle", "third_party\llvm-demangle\llvm-demangle.vcxproj", "{FC532FFF-EBB1-4601-B903-C09EFB79ECED}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D142CC15-3DBD-4295-BDD9-472FE53A00A7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "demangler-test", "test\demangler-test\demangler-test.csproj", "{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "binarycache-test", "test\binarycache-test\binarycache-test.csproj", "{FF973409-2F2A-46F7-B01D-C6405EA40422}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Debug|ARM.ActiveCfg = Debug|x86
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Debug|x64.ActiveCfg = Debug|x64
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Debug|x64.Build.0 = Debug|x64
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Debug|x86.ActiveCfg = Debug|x86
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Debug|x86.Build.0 = Debug|x86
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Release|ARM.ActiveCfg = Release|x86
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Release|x64.ActiveCfg = Release|x64
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Release|x64.Build.0 = Release|x64
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Release|x86.ActiveCfg = Release|x86
{9232B9B6-F2BA-44A3-B8A6-A352777F632C}.Release|x86.Build.0 = Release|x86
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Debug|Any CPU.ActiveCfg = Debug|Win32
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Debug|ARM.ActiveCfg = Debug|Win32
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Debug|x64.ActiveCfg = Debug|x64
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Debug|x64.Build.0 = Debug|x64
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Debug|x86.ActiveCfg = Debug|Win32
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Debug|x86.Build.0 = Debug|Win32
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Release|Any CPU.ActiveCfg = Release|Win32
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Release|ARM.ActiveCfg = Release|Win32
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Release|x64.ActiveCfg = Release|x64
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Release|x64.Build.0 = Release|x64
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Release|x86.ActiveCfg = Release|Win32
{FC5FFCAF-982F-4A95-8FA6-2A95B1F7CDC8}.Release|x86.Build.0 = Release|Win32
{5565A612-B250-4FE0-98DD-07C56916C194}.Debug|Any CPU.ActiveCfg = Debug|x86
{5565A612-B250-4FE0-98DD-07C56916C194}.Debug|ARM.ActiveCfg = Debug|x86
{5565A612-B250-4FE0-98DD-07C56916C194}.Debug|x64.ActiveCfg = Debug|x64
{5565A612-B250-4FE0-98DD-07C56916C194}.Debug|x64.Build.0 = Debug|x64
{5565A612-B250-4FE0-98DD-07C56916C194}.Debug|x86.ActiveCfg = Debug|x86
{5565A612-B250-4FE0-98DD-07C56916C194}.Debug|x86.Build.0 = Debug|x86
{5565A612-B250-4FE0-98DD-07C56916C194}.Release|Any CPU.ActiveCfg = Release|x86
{5565A612-B250-4FE0-98DD-07C56916C194}.Release|ARM.ActiveCfg = Release|x86
{5565A612-B250-4FE0-98DD-07C56916C194}.Release|x64.ActiveCfg = Release|x64
{5565A612-B250-4FE0-98DD-07C56916C194}.Release|x64.Build.0 = Release|x64
{5565A612-B250-4FE0-98DD-07C56916C194}.Release|x86.ActiveCfg = Release|x86
{5565A612-B250-4FE0-98DD-07C56916C194}.Release|x86.Build.0 = Release|x86
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Debug|Any CPU.ActiveCfg = Debug|Win32
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Debug|ARM.ActiveCfg = Debug|Win32
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Debug|x64.ActiveCfg = Debug|x64
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Debug|x64.Build.0 = Debug|x64
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Debug|x86.ActiveCfg = Debug|Win32
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Debug|x86.Build.0 = Debug|Win32
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Release|Any CPU.ActiveCfg = Release|Win32
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Release|ARM.ActiveCfg = Release|Win32
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Release|x64.ActiveCfg = Release|x64
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Release|x64.Build.0 = Release|x64
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Release|x86.ActiveCfg = Release|Win32
{477D0215-F252-41A1-874B-F27E3EA1ED17}.Release|x86.Build.0 = Release|Win32
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Debug|Any CPU.ActiveCfg = Debug|x86
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Debug|ARM.ActiveCfg = Debug|x86
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Debug|x64.ActiveCfg = Debug|x64
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Debug|x64.Build.0 = Debug|x64
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Debug|x86.ActiveCfg = Debug|x86
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Debug|x86.Build.0 = Debug|x86
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Release|Any CPU.ActiveCfg = Release|x86
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Release|ARM.ActiveCfg = Release|x86
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Release|x64.ActiveCfg = Release|x64
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Release|x64.Build.0 = Release|x64
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Release|x86.ActiveCfg = Release|x86
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE}.Release|x86.Build.0 = Release|x86
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Debug|Any CPU.ActiveCfg = Debug|Win32
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Debug|ARM.ActiveCfg = Debug|Win32
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Debug|x64.ActiveCfg = Debug|x64
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Debug|x64.Build.0 = Debug|x64
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Debug|x86.ActiveCfg = Debug|Win32
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Debug|x86.Build.0 = Debug|Win32
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Release|Any CPU.ActiveCfg = Release|Win32
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Release|ARM.ActiveCfg = Release|Win32
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Release|x64.ActiveCfg = Release|x64
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Release|x64.Build.0 = Release|x64
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Release|x86.ActiveCfg = Release|Win32
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1}.Release|x86.Build.0 = Release|Win32
{4A459493-14FC-4C87-9254-60E0959535DA}.Debug|Any CPU.ActiveCfg = Debug|x86
{4A459493-14FC-4C87-9254-60E0959535DA}.Debug|ARM.ActiveCfg = Debug|x86
{4A459493-14FC-4C87-9254-60E0959535DA}.Debug|x64.ActiveCfg = Debug|x64
{4A459493-14FC-4C87-9254-60E0959535DA}.Debug|x64.Build.0 = Debug|x64
{4A459493-14FC-4C87-9254-60E0959535DA}.Debug|x86.ActiveCfg = Debug|x86
{4A459493-14FC-4C87-9254-60E0959535DA}.Debug|x86.Build.0 = Debug|x86
{4A459493-14FC-4C87-9254-60E0959535DA}.Release|Any CPU.ActiveCfg = Release|x86
{4A459493-14FC-4C87-9254-60E0959535DA}.Release|ARM.ActiveCfg = Release|x86
{4A459493-14FC-4C87-9254-60E0959535DA}.Release|x64.ActiveCfg = Release|x64
{4A459493-14FC-4C87-9254-60E0959535DA}.Release|x64.Build.0 = Release|x64
{4A459493-14FC-4C87-9254-60E0959535DA}.Release|x86.ActiveCfg = Release|x86
{4A459493-14FC-4C87-9254-60E0959535DA}.Release|x86.Build.0 = Release|x86
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Debug|Any CPU.ActiveCfg = Debug|Win32
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Debug|ARM.ActiveCfg = Debug|Win32
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Debug|x64.ActiveCfg = Debug|x64
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Debug|x64.Build.0 = Debug|x64
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Debug|x86.ActiveCfg = Debug|Win32
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Debug|x86.Build.0 = Debug|Win32
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Release|Any CPU.ActiveCfg = Release|Win32
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Release|ARM.ActiveCfg = Release|Win32
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Release|x64.ActiveCfg = Release|x64
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Release|x64.Build.0 = Release|x64
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Release|x86.ActiveCfg = Release|Win32
{FC532FFF-EBB1-4601-B903-C09EFB79ECED}.Release|x86.Build.0 = Release|Win32
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Debug|Any CPU.ActiveCfg = Debug|x86
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Debug|ARM.ActiveCfg = Debug|x86
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Debug|x64.ActiveCfg = Debug|x64
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Debug|x64.Build.0 = Debug|x64
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Debug|x86.ActiveCfg = Debug|x86
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Debug|x86.Build.0 = Debug|x86
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Release|Any CPU.ActiveCfg = Release|x86
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Release|ARM.ActiveCfg = Release|x86
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Release|x64.ActiveCfg = Release|x64
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Release|x64.Build.0 = Release|x64
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Release|x86.ActiveCfg = Release|x86
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A}.Release|x86.Build.0 = Release|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Debug|Any CPU.ActiveCfg = Debug|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Debug|ARM.ActiveCfg = Debug|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Debug|x64.ActiveCfg = Debug|x64
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Debug|x64.Build.0 = Debug|x64
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Debug|x86.ActiveCfg = Debug|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Debug|x86.Build.0 = Debug|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Release|Any CPU.ActiveCfg = Release|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Release|ARM.ActiveCfg = Release|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Release|x64.ActiveCfg = Release|x64
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Release|x64.Build.0 = Release|x64
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Release|x86.ActiveCfg = Release|x86
{FF973409-2F2A-46F7-B01D-C6405EA40422}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{477D0215-F252-41A1-874B-F27E3EA1ED17} = {A2A2925A-0582-4436-9A12-8567E979A621}
{7B11011C-7FD7-4AB0-A1AD-04E940B026DE} = {A2A2925A-0582-4436-9A12-8567E979A621}
{BE4A9759-A412-44CB-887D-FEFBEF1ABBF1} = {A2A2925A-0582-4436-9A12-8567E979A621}
{FC532FFF-EBB1-4601-B903-C09EFB79ECED} = {A2A2925A-0582-4436-9A12-8567E979A621}
{24F9E0C0-CA6E-4565-A9E2-88602DD9F18A} = {D142CC15-3DBD-4295-BDD9-472FE53A00A7}
{FF973409-2F2A-46F7-B01D-C6405EA40422} = {D142CC15-3DBD-4295-BDD9-472FE53A00A7}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {054EFA82-95F8-4719-9F9A-546E7BEC56BF}
EndGlobalSection
EndGlobal
================================================
FILE: DependenciesGui/About.xaml
================================================
<Window x:Class="Dependencies.About"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Dependencies"
mc:Ignorable="d"
Title="About" MinHeight="100" MinWidth="600" SizeToContent="WidthAndHeight" ResizeMode="NoResize" >
<Grid Margin="20 20 20 20" MinHeight="100" MinWidth="600">
<Grid.RowDefinitions>
<RowDefinition Height="33*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20*"/>
<ColumnDefinition Width="80*"/>
</Grid.ColumnDefinitions>
<Image Source="Images/Dependencies_48px.png" Height="48" Width="48" Grid.Column="0"/>
<TextBlock Grid.Column="1"
TextWrapping="Wrap"
VerticalAlignment="Center"
Name="TextContent">
Dependencies v<Run Text="{Binding VersionStr,Mode=OneWay}" /> :<LineBreak />
<LineBreak />
Dependency tool made by lucasg.
<LineBreak />
Please go to
<Hyperlink
NavigateUri="https://github.com/lucasg/Dependencies/issues"
RequestNavigate="Uri_RequestNavigate">
https://github.com/lucasg/Dependencies/issues
</Hyperlink> to report issues.
<LineBreak />
<LineBreak />
<TextBlock Name="UpdateCheck"><Hyperlink NavigateUri="#" RequestNavigate="Uri_CheckUpdates">Check for updates</Hyperlink></TextBlock>
</TextBlock>
</Grid>
</Grid>
</Window>
================================================
FILE: DependenciesGui/About.xaml.cs
================================================
using System;
using System.Diagnostics;
using System.Net;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Navigation;
namespace Dependencies
{
/// <summary>
/// Logique d'interaction pour About.xaml
/// </summary>
public partial class About : Window
{
public About()
{
InitializeComponent();
DataContext = this;
}
private void Uri_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start(e.Uri.ToString());
}
public string VersionStr
{
get
{
return Assembly.GetEntryAssembly().GetName().Version.ToString();
}
}
private async void Uri_CheckUpdates(object sender, RequestNavigateEventArgs e)
{
string version = await GetLatestVersion("https://github.com/lucasg/Dependencies/releases/latest");
UpdateCheck.Inlines.Clear();
UpdateCheck.Inlines.Add("Latest version: ");
var link = new Hyperlink()
{
NavigateUri = new Uri(version)
};
link.Inlines.Add(version);
link.RequestNavigate += Uri_RequestNavigate;
UpdateCheck.Inlines.Add(link);
}
// Based on https://stackoverflow.com/a/28424940/4928207
private async Task<string> GetLatestVersion(string url)
{
try
{
var req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "HEAD";
req.AllowAutoRedirect = false;
using (var resp = (HttpWebResponse)await req.GetResponseAsync())
{
switch (resp.StatusCode)
{
case HttpStatusCode.OK:
return url;
case HttpStatusCode.Redirect:
case HttpStatusCode.MovedPermanently:
case HttpStatusCode.RedirectKeepVerb:
case HttpStatusCode.RedirectMethod:
if (resp.Headers["Location"] == null)
return url;
return resp.Headers["Location"];
default:
return url;
}
}
}
catch
{
}
return url;
}
}
}
================================================
FILE: DependenciesGui/App.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Dependencies.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
<userSettings>
<Dependencies.Properties.Settings>
<setting name="Undecorate" serializeAs="String">
<value>True</value>
</setting>
<setting name="ShowStatusBar" serializeAs="String">
<value>True</value>
</setting>
<setting name="FullPath" serializeAs="String">
<value>True</value>
</setting>
<setting name="RecentFilesIndex" serializeAs="String">
<value>0</value>
</setting>
<setting name="PeViewerPath" serializeAs="String">
<value>peview.exe</value>
</setting>
<setting name="TreeBuildBehaviour" serializeAs="String">
<value>ChildOnly</value>
</setting>
<setting name="Font" serializeAs="String">
<value>Courier New</value>
</setting>
<setting name="RecentFiles" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string />
<string />
<string />
<string />
<string />
<string />
<string />
<string />
<string />
<string />
</ArrayOfString>
</value>
</setting>
<setting name="TreeDepth" serializeAs="String">
<value>2</value>
</setting>
<setting name="BinaryCacheOptionValue" serializeAs="String">
<value>True</value>
</setting>
</Dependencies.Properties.Settings>
</userSettings>
</configuration>
================================================
FILE: DependenciesGui/App.xaml
================================================
<Application x:Class="Dependencies.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="App_Startup"
Exit="App_Exit">
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<!-- Import themes for Dragablz forms -->
<ResourceDictionary Source="pack://application:,,,/Dragablz;component/Themes/Generic.xaml" />
<!-- Import themes for FilterControl forms -->
<ResourceDictionary Source="pack://application:,,,/DependenciesGui;component/FilterControl/FilterControl.generic.xaml" />
<!-- Import themes for DependencyCustomListView forms -->
<ResourceDictionary Source="pack://application:,,,/DependenciesGui;component/DependencyCustomListView.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
<JumpList.JumpList>
<JumpList ShowRecentCategory="True">
</JumpList>
</JumpList.JumpList>
</Application>
================================================
FILE: DependenciesGui/App.xaml.cs
================================================
using System;
using System.Windows;
using System.Windows.Shell;
using System.ComponentModel;
using System.IO;
using Dependencies.ClrPh;
using System.Reflection;
namespace Dependencies
{
/// <summary>
/// Application instance
/// </summary>
public partial class App : Application, INotifyPropertyChanged
{
private string statusBarMessage = "";
private MainWindow mainWindow;
public string StatusBarMessage
{
get { return statusBarMessage; }
set
{
if (statusBarMessage != value)
{
statusBarMessage = value;
OnPropertyChanged("StatusBarMessage");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private void App_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "StatusBarMessage")
{
mainWindow.AppStatusBarMessage.Content = (object)StatusBarMessage;
}
}
public PE LoadBinary(string path)
{
StatusBarMessage = String.Format("Loading module {0:s} ...", path);
if (!NativeFile.Exists(path))
{
StatusBarMessage = String.Format("Loading PE file \"{0:s}\" failed : file not present on disk.", path);
return null;
}
PE pe = BinaryCache.LoadPe(path);
if (pe == null || !pe.LoadSuccessful)
{
StatusBarMessage = String.Format("Loading module {0:s} failed.", path);
}
else
{
StatusBarMessage = String.Format("Loading PE file \"{0:s}\" successful.", pe.Filepath);
}
return pe;
}
void App_Startup(object sender, StartupEventArgs e)
{
(Application.Current as App).PropertyChanged += App_PropertyChanged;
Phlib.InitializePhLib();
// Load singleton for binary caching
BinaryCache.InitializeBinaryCache(Dependencies.BinaryCacheOption.GetGlobalBehaviour() == Dependencies.BinaryCacheOption.BinaryCacheOptionValue.Yes);
// https://www.red-gate.com/simple-talk/blogs/wpf-menu-displays-to-the-left-of-the-window/
SetDropDownMenuToBeRightAligned();
mainWindow = new MainWindow();
mainWindow.IsMaster = true;
switch(Phlib.GetClrPhArch())
{
case CLRPH_ARCH.x86:
mainWindow.Title = "Dependencies (x86)";
break;
case CLRPH_ARCH.x64:
mainWindow.Title = "Dependencies (x64)";
break;
case CLRPH_ARCH.WOW64:
mainWindow.Title = "Dependencies (WoW64)";
break;
}
mainWindow.Show();
// Process command line args
if (e.Args.Length > 0)
{
mainWindow.OpenNewDependencyWindow(e.Args[0]);
}
}
void App_Exit(object sender, ExitEventArgs e)
{
Dependencies.Properties.Settings.Default.Save();
BinaryCache.Instance.Unload();
}
private static void SetDropDownMenuToBeRightAligned()
{
var menuDropAlignmentField = typeof(SystemParameters).GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
Action setAlignmentValue = () =>
{
if (SystemParameters.MenuDropAlignment && menuDropAlignmentField != null) menuDropAlignmentField.SetValue(null, false);
};
setAlignmentValue();
SystemParameters.StaticPropertyChanged += (sender, e) =>
{
setAlignmentValue();
};
}
public static void AddToRecentDocuments(String Filename)
{
// Create custom task
JumpTask item = new JumpTask();
item.Title = System.IO.Path.GetFileName(Filename);
item.Description = Filename;
item.ApplicationPath = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
item.Arguments = Filename;
item.CustomCategory = "Tasks";
// Add document to recent category
JumpList RecentsDocs = JumpList.GetJumpList(Application.Current);
RecentsDocs.JumpItems.Add(item);
JumpList.AddToRecentCategory(item);
RecentsDocs.Apply();
// Store a copy in application settings, LRU style
// First check if the item is not already present in the list
int index = Dependencies.Properties.Settings.Default.RecentFiles.IndexOf(Filename);
if (index != -1)
{
Dependencies.Properties.Settings.Default.RecentFiles.RemoveAt(index);
}
// Second check if the list is not full
if (Dependencies.Properties.Settings.Default.RecentFiles.Count == 10)
{
Dependencies.Properties.Settings.Default.RecentFiles.RemoveAt(9);
}
// Prepend the list with the new item
Dependencies.Properties.Settings.Default.RecentFiles.Insert(0, Filename);
}
}
}
================================================
FILE: DependenciesGui/CustomHeaderViewModel.cs
================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace Dependencies
{
public class CustomHeaderViewModel : INotifyPropertyChanged
{
private string _header;
private bool _isSelected;
public string Header
{
get { return _header; }
set
{
if (value == _header) return;
_header = value;
OnPropertyChanged("Header");
}
}
public bool IsSelected
{
get { return _isSelected; }
set
{
if (value.Equals(_isSelected)) return;
_isSelected = value;
OnPropertyChanged("IsSelected");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
================================================
FILE: DependenciesGui/Dependencies.manifest
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Dependencies"
processorArchitecture="*"
version="1.0.0.0"
type="win32"
processorArchitecture="amd64"
/>
<description>Deependencies</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<longPathAware>true</longPathAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
================================================
FILE: DependenciesGui/DependenciesGui.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9232B9B6-F2BA-44A3-B8A6-A352777F632C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Dependencies</RootNamespace>
<AssemblyName>DependenciesGui</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Dependencies.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup>
<StartupObject>Dependencies.App</StartupObject>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Appx|x86'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Appx|x64'">
<OutputPath>$(SolutionDir)bin\$(Configuration)$(Platform)</OutputPath>
<IntermediateOutputPath>$(SolutionDir)obj\$(ProjectName)\$(Configuration)$(Platform)</IntermediateOutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.dll</HintPath>
</Reference>
<Reference Include="Mono.Cecil.Mdb, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.Mdb.dll</HintPath>
</Reference>
<Reference Include="Mono.Cecil.Pdb, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.Pdb.dll</HintPath>
</Reference>
<Reference Include="Mono.Cecil.Rocks, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.11.4\lib\net40\Mono.Cecil.Rocks.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="UIAutomationProvider" />
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="About.xaml.cs">
<DependentUpon>About.xaml</DependentUpon>
</Compile>
<Compile Include="CustomHeaderViewModel.cs" />
<Compile Include="DependencyCustomListView.xaml.cs">
<DependentUpon>DependencyCustomListView.xaml</DependentUpon>
</Compile>
<Compile Include="DependencyExportList.xaml.cs">
<DependentUpon>DependencyExportList.xaml</DependentUpon>
</Compile>
<Compile Include="DependencyImportList.xaml.cs">
<DependentUpon>DependencyImportList.xaml</DependentUpon>
</Compile>
<Compile Include="DependencyModuleList.xaml.cs">
<DependentUpon>DependencyModuleList.xaml</DependentUpon>
</Compile>
<Compile Include="DragablzCustomHeader.cs" />
<Compile Include="FilterControl\FilterControl.cs" />
<Compile Include="Helpers\RelayCommand.cs" />
<Compile Include="Helpers\SettingBindingHandler.cs" />
<Compile Include="Models\ModuleInfo.cs" />
<Compile Include="Models\PeExport.cs" />
<Compile Include="Models\PeImport.cs" />
<Compile Include="ModuleSearchOrder.xaml.cs">
<DependentUpon>ModuleSearchOrder.xaml</DependentUpon>
</Compile>
<Compile Include="SearchFolder.xaml.cs">
<DependentUpon>SearchFolder.xaml</DependentUpon>
</Compile>
<Compile Include="Settings.cs" />
<Compile Include="Shell32IconExtractor.cs" />
<Compile Include="UserSettings.xaml.cs">
<DependentUpon>UserSettings.xaml</DependentUpon>
</Compile>
<Page Include="About.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DependencyCustomListView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="DependencyExportList.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DependencyImportList.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DependencyModuleList.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DependencyWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="DragablzCustomHeader.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="FilterControl\FilterControl.generic.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="DependencyWindow.xaml.cs">
<DependentUpon>DependencyWindow.xaml</DependentUpon>
</Compile>
<Compile Include="GridViewSort.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Page Include="ModuleSearchOrder.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SearchFolder.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="UserSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="Dependencies.manifest" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ClrPhlib\ClrPhlib.vcxproj">
<Project>{fc5ffcaf-982f-4a95-8fa6-2a95b1f7cdc8}</Project>
<Name>ClrPhlib</Name>
</ProjectReference>
<ProjectReference Include="..\DependenciesLib\DependenciesLib.csproj">
<Project>{4a459493-14fc-4c87-9254-60e0959535da}</Project>
<Name>DependenciesLib</Name>
</ProjectReference>
<ProjectReference Include="..\third_party\Dragablz\Dragablz\Dragablz.net45.csproj">
<Project>{7b11011c-7fd7-4ab0-a1ad-04e940b026de}</Project>
<Name>Dragablz.net45</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Resource Include="Images\Dependencies_48px.png" />
<Resource Include="Images\GlyphSortAscending.png" />
<Resource Include="Images\GlyphSortDescending.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\Hourglass.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\Question.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\Dependencies_32px.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\Dependencies_32px-no-blur.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\Dependencies_48px-no-blur.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\export_c.png" />
<Resource Include="Images\export_cpp.png" />
<Resource Include="Images\export_forward.png" />
<Resource Include="Images\export_ord.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\import_cpp_found.png" />
<Resource Include="Images\import_cpp_not_found.png" />
<Resource Include="Images\import_c_found.png" />
<Resource Include="Images\import_c_not_found.png" />
<Resource Include="Images\import_ord_not_found.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\import_ord_found.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Dependencies.ico" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\Reference.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\InvalidOverlay.png" />
<Resource Include="Images\QuestionOverlay.png" />
<Resource Include="Images\ReferenceOverlay.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\HourglassOverlay.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
================================================
FILE: DependenciesGui/DependencyCustomListView.xaml
================================================
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Dependencies"
xmlns:util="clr-namespace:Wpf.Util"
xmlns:properties="clr-namespace:Dependencies.Properties"
mc:Ignorable="d"
x:Class="DependencyCustomListView"
>
<Style x:Key="LeftAlignHeader" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
<Setter Property="Padding" Value="5,0,0,0"></Setter>
</Style>
<Style x:Key="DependencyCustomListViewItem" TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="FontFamily" Value="{Binding Source={x:Static properties:Settings.Default}, Path=Font, Mode=OneWay}" />
<Setter Property="ContextMenu" Value="{DynamicResource ResourceKey=ItemContextMenu}" />
<Setter Property="ToolTip" Value="{Binding Status }" />
</Style>
<Style x:Key="DependencyCustomListViewStyle" TargetType="{x:Type local:DependencyCustomListView}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="util:GridViewSort.AutoSort" Value="True"/>
<Setter Property="ItemContainerStyle" Value="{StaticResource DependencyCustomListViewItem}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:DependencyCustomListView}">
<Border x:Name="_Border" Background="White" BorderBrush="#FF828790" BorderThickness="1,1,1,1">
<Grid x:Name="_Grid" SnapsToDevicePixels="true">
<Grid.RowDefinitions>
<RowDefinition Height="46*"/>
<RowDefinition Height="auto" MaxHeight="25"/>
</Grid.RowDefinitions>
<ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}" >
<ItemsPresenter x:Name="ContentsItems" Grid.Row="0"/>
</ScrollViewer>
<!-- TargetControl is patched at runtime -->
<local:FilterControl x:Name="PART_SearchBar"
Height="25" Grid.Row="1"
FilterTextBindingPath="{TemplateBinding SearchListFilter}"
FilterFiringInterval="20"
/>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
================================================
FILE: DependenciesGui/DependencyCustomListView.xaml.cs
================================================
using System;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Input;
using System.Diagnostics;
using System.Windows;
namespace Dependencies
{
/// <summary>
/// DependencyImportList Filterable ListView for displaying exports.
/// @TODO(Make this a template user control in order to share it between Modeules, Imports and Exports)
/// </summary>
[TemplatePart(Name = PART_SearchBar, Type = typeof(FilterControl))]
public partial class DependencyCustomListView : ListView
{
private const string PART_SearchBar = "PART_SearchBar";
public FilterControl SearchBar = null;
public DependencyCustomListView()
{
this.KeyDown += new KeyEventHandler(OnListViewKeyDown);
}
public static readonly DependencyProperty SearchListFilterProperty = DependencyProperty.Register(
"SearchListFilter", typeof(string), typeof(DependencyCustomListView), new PropertyMetadata(null));
public string SearchListFilter
{
get { return (string)GetValue(SearchListFilterProperty); }
set { SetValue(SearchListFilterProperty, value); }
}
public static readonly DependencyProperty CopyHandlerProperty = DependencyProperty.Register(
"CopyHandler", typeof(Func<object, string>), typeof(DependencyCustomListView), new PropertyMetadata(null));
public Func<object, string> CopyHandler
{
get { return (Func<object, string>)GetValue(CopyHandlerProperty); }
set { SetValue(CopyHandlerProperty, value); }
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
AttachToVisualTree();
}
private void AttachToVisualTree()
{
SearchBar = GetTemplateChild(PART_SearchBar) as FilterControl;
SearchBar.TargetControl = this;
}
#region events handlers
protected virtual void OnListViewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
System.Windows.Controls.ListView ListView = sender as System.Windows.Controls.ListView;
bool CtrlKeyDown = Keyboard.IsKeyDown(System.Windows.Input.Key.LeftCtrl) || Keyboard.IsKeyDown(System.Windows.Input.Key.RightCtrl);
bool ShiftKeyDown = Keyboard.IsKeyDown(System.Windows.Input.Key.LeftShift) || Keyboard.IsKeyDown(System.Windows.Input.Key.RightShift);
Debug.WriteLine("[DependencyCustomListView] Key Pressed : " + e.Key + ". Ctrl Key down : " + CtrlKeyDown);
if ((e.Key == System.Windows.Input.Key.C) && CtrlKeyDown && !ShiftKeyDown)
{
List<string> StrToCopy = new List<string>();
foreach (object SelectItem in ListView.SelectedItems)
{
StrToCopy.Add(CopyHandler(SelectItem));
}
System.Windows.Clipboard.Clear();
// sometimes another process has "opened" the clipboard, so we need to wait for it
try
{
Clipboard.SetText((string)String.Join("\n", StrToCopy), TextDataFormat.Text);
return;
}
catch { }
}
else if ((e.Key == System.Windows.Input.Key.F) && CtrlKeyDown)
{
if (this.SearchBar != null)
{
this.SearchBar.Visibility = System.Windows.Visibility.Visible;
this.SearchBar.Focus();
}
return;
}
else if (e.Key == Key.Escape)
{
if (this.SearchBar != null)
{
this.SearchBar.Clear();
}
}
}
#endregion events handlers
}
}
================================================
FILE: DependenciesGui/DependencyExportList.xaml
================================================
<local:DependencyCustomListView x:Class="Dependencies.DependencyExportList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:properties="clr-namespace:Dependencies.Properties"
xmlns:local="clr-namespace:Dependencies"
xmlns:util="clr-namespace:Wpf.Util"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Style="{StaticResource DependencyCustomListViewStyle}"
SearchListFilter="Name"
CopyHandler="ExportCopyHandler"
>
<local:DependencyCustomListView.CommandBindings>
<CommandBinding Command="local:DependencyExportList.CopyValuesCommand" Executed="ExportListCopySelectedValues"></CommandBinding>
</local:DependencyCustomListView.CommandBindings>
<local:DependencyCustomListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header = "Copy"
Command="local:DependencyExportList.CopyValuesCommand"
InputGestureText="Ctrl+C"
IsEnabled="True"/>
<MenuItem HeaderStringFormat= "Copy {0:s}"
Header = "{Binding DataContext.Name, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"
Command="{Binding Path=DataContext.CopyValue, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid},AncestorLevel=1 }}"
CommandParameter ="{Binding DataContext.Name, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid }}"
InputGestureText="Ctrl+Maj+C"
IsEnabled="True"/>
<MenuItem Header="Select All"
Command="ApplicationCommands.SelectAll"
IsEnabled="True"/>
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem Header="_Undecorate C++ Functions" Height="26" InputGestureText="F10" IsCheckable="True" IsChecked="{Binding Source={x:Static properties:Settings.Default}, Path=Undecorate, Mode=TwoWay }"/>
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem Header="Lookup Export function on MSDN"
Command="{Binding Path=DataContext.QueryExportApi, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid},AncestorLevel=1 }}"
CommandParameter ="{Binding DataContext , RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"
InputGestureText="Alt+Enter"
IsEnabled="True" />
</ContextMenu>
</local:DependencyCustomListView.Resources>
<local:DependencyCustomListView.View>
<GridView AllowsColumnReorder="true">
<GridViewColumn Width="40" Header="E" util:GridViewSort.PropertyName="Type">
<GridViewColumn.HeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Control.ToolTip" Value="Selected's module exports"/>
<Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
<Setter Property="Padding" Value="5,0,0,0"></Setter>
</Style>
</GridViewColumn.HeaderContainerStyle>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Width="30" Height="14" Source="{Binding IconUri}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Ordinal" Width="140" util:GridViewSort.PropertyName="Ordinal" HeaderContainerStyle="{StaticResource LeftAlignHeader}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Ordinal, StringFormat={}{0} (0x{0:x04}) }" TextAlignment="Right" HorizontalAlignment="Right"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Hint" Width="140" util:GridViewSort.PropertyName="Hint" HeaderContainerStyle="{StaticResource LeftAlignHeader}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Hint, StringFormat={}{0} (0x{0:x04}), TargetNullValue='N/A' }" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Function" Width="250" DisplayMemberBinding="{Binding Name}" util:GridViewSort.PropertyName="Name" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="VirtualAddress" Width="250" DisplayMemberBinding="{Binding VirtualAddress}" util:GridViewSort.PropertyName="VirtualAddress" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Demangler" Width="250" DisplayMemberBinding="{Binding Demangler}" util:GridViewSort.PropertyName="Name" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
</GridView>
</local:DependencyCustomListView.View>
</local:DependencyCustomListView>
================================================
FILE: DependenciesGui/DependencyExportList.xaml.cs
================================================
using System;
using System.Linq;
using System.Windows;
using System.Collections.Generic;
using System.Windows.Input;
using Dependencies.ClrPh;
namespace Dependencies
{
/// <summary>
/// DependencyImportList Filterable ListView for displaying exports.
/// </summary>
public partial class DependencyExportList : DependencyCustomListView
{
public static readonly RoutedUICommand CopyValuesCommand = new RoutedUICommand();
public DependencyExportList()
{
InitializeComponent();
}
public void SetExports(List<PeExport> Exports, PhSymbolProvider SymPrv)
{
this.Items.Clear();
foreach (PeExport Export in Exports)
{
this.Items.Add(new DisplayPeExport(Export, SymPrv));
}
}
private string ExportCopyHandler(object SelectedItem)
{
if (SelectedItem == null)
{
return "";
}
return (SelectedItem as DisplayPeExport).ToString();
}
private void ExportListCopySelectedValues(object sender, RoutedEventArgs e)
{
if (this.SelectedItems.Count == 0)
return;
List<DisplayPeExport> selectedExports = new List<DisplayPeExport>();
foreach (var import in this.SelectedItems)
{
selectedExports.Add((import as DisplayPeExport));
}
string SelectedValues = String.Join("\n", selectedExports.Select(exp => exp.ToString()));
Clipboard.Clear();
// sometimes another process has "opened" the clipboard, so we need to wait for it
try
{
Clipboard.SetText((string)SelectedValues, TextDataFormat.Text);
return;
}
catch { }
}
public void ResetAutoSortProperty()
{
Wpf.Util.GridViewSort.RemoveSort(this.Items, this);
}
}
}
================================================
FILE: DependenciesGui/DependencyImportList.xaml
================================================
<local:DependencyCustomListView x:Class="Dependencies.DependencyImportList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Dependencies"
xmlns:util="clr-namespace:Wpf.Util"
xmlns:properties="clr-namespace:Dependencies.Properties"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Style="{StaticResource DependencyCustomListViewStyle}"
SearchListFilter="FilterName"
CopyHandler="ImportCopyHandler"
>
<local:DependencyCustomListView.CommandBindings>
<CommandBinding Command="local:DependencyImportList.CopyValuesCommand" Executed="ImportListCopySelectedValues"></CommandBinding>
</local:DependencyCustomListView.CommandBindings>
<local:DependencyCustomListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header = "Copy"
Command="local:DependencyImportList.CopyValuesCommand"
InputGestureText="Ctrl+C"
IsEnabled="True"/>
<MenuItem HeaderStringFormat= "Copy {0:s}"
Header = "{Binding DataContext.Name, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"
Command="{Binding Path=DataContext.CopyValue, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid},AncestorLevel=1 }}"
CommandParameter ="{Binding DataContext.Name, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid }}"
InputGestureText="Ctrl+Maj+C"
IsEnabled="True"/>
<MenuItem Header="Select All"
Command="ApplicationCommands.SelectAll"
IsEnabled="True"/>
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem Header="_Undecorate C++ Functions"
Height="26" InputGestureText="F10"
IsCheckable="True" IsChecked="{Binding Source={x:Static properties:Settings.Default}, Path=Undecorate, Mode=TwoWay }"/>
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem Header="Lookup Import function on MSDN"
Command="{Binding Path=DataContext.QueryImportApi, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid},AncestorLevel=1 }}"
CommandParameter ="{Binding DataContext , RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"
InputGestureText="Alt+Enter"
IsEnabled="True" />
</ContextMenu>
</local:DependencyCustomListView.Resources>
<local:DependencyCustomListView.View>
<GridView AllowsColumnReorder="true">
<GridViewColumn Width="40" Header="PI" util:GridViewSort.PropertyName="Type" >
<GridViewColumn.HeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Control.ToolTip" Value="Selected's module imports"/>
<Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
<Setter Property="Padding" Value="5,0,0,0"></Setter>
</Style>
</GridViewColumn.HeaderContainerStyle>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Width="30" Height="14" Source="{Binding IconUri}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Ordinal" Width="140" util:GridViewSort.PropertyName="Ordinal" HeaderContainerStyle="{StaticResource LeftAlignHeader}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Ordinal, StringFormat={}{0} (0x{0:x04}), TargetNullValue='N/A' }" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Hint" Width="140" util:GridViewSort.PropertyName="Hint" HeaderContainerStyle="{StaticResource LeftAlignHeader}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Hint, StringFormat={}{0} (0x{0:x04}), TargetNullValue='N/A' }" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Function" Width="250" DisplayMemberBinding="{Binding Name}" util:GridViewSort.PropertyName="Name" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Module" Width="300" DisplayMemberBinding="{Binding ModuleName}" util:GridViewSort.PropertyName="ModuleName" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Delayed" Width="100" DisplayMemberBinding="{Binding DelayImport}" util:GridViewSort.PropertyName="DelayImport" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Demangler" Width="250" DisplayMemberBinding="{Binding Demangler}" util:GridViewSort.PropertyName="Name" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
</GridView>
</local:DependencyCustomListView.View>
</local:DependencyCustomListView>
================================================
FILE: DependenciesGui/DependencyImportList.xaml.cs
================================================
using System;
using System.Linq;
using System.Windows;
using System.Collections.Generic;
using System.Windows.Input;
using Dependencies.ClrPh;
namespace Dependencies
{
/// <summary>
/// DependencyImportList Filterable ListView for displaying imports.
/// </summary>
public partial class DependencyImportList : DependencyCustomListView
{
public static readonly RoutedUICommand CopyValuesCommand = new RoutedUICommand();
public DependencyImportList()
{
InitializeComponent();
}
public void SetImports(string ModuleFilepath, List<PeExport> Exports, List<PeImportDll> ParentImports, PhSymbolProvider SymPrv, DependencyWindow Dependencies)
{
this.Items.Clear();
foreach (PeImportDll DllImport in ParentImports)
{
foreach (var Import in BinaryCache.LookupImports(DllImport, Exports))
{
this.Items.Add(new DisplayPeImport(Import.Item1, SymPrv, ModuleFilepath, Import.Item2));
}
}
}
public void SetRootImports(List<PeImportDll> Imports, PhSymbolProvider SymPrv, DependencyWindow Dependencies)
{
this.Items.Clear();
foreach (PeImportDll DllImport in Imports)
{
PE ModuleImport = Dependencies.LoadImport(DllImport.Name, null, DllImport.IsDelayLoad() );
string ModuleFilepath = (ModuleImport != null) ? ModuleImport.Filepath : null;
foreach( var Import in BinaryCache.LookupImports(DllImport, ModuleFilepath))
{
this.Items.Add(new DisplayPeImport(Import.Item1, SymPrv, ModuleFilepath, Import.Item2));
}
}
}
private string ImportCopyHandler(object SelectedItem)
{
if (SelectedItem == null)
{
return "";
}
return (SelectedItem as DisplayPeImport).ToString();
}
private void ImportListCopySelectedValues(object sender, RoutedEventArgs e)
{
if (this.SelectedItems.Count == 0)
return;
List<DisplayPeImport> selectedImports = new List<DisplayPeImport>();
foreach (var import in this.SelectedItems)
{
selectedImports.Add((import as DisplayPeImport));
}
string SelectedValues = String.Join("\n", selectedImports.Select( imp => imp.ToString()));
Clipboard.Clear();
// sometimes another process has "opened" the clipboard, so we need to wait for it
try
{
Clipboard.SetText((string)SelectedValues, TextDataFormat.Text);
return;
}
catch { }
}
public void ResetAutoSortProperty()
{
Wpf.Util.GridViewSort.RemoveSort(this.Items, this);
}
}
}
================================================
FILE: DependenciesGui/DependencyModuleList.xaml
================================================
<local:DependencyCustomListView x:Class="Dependencies.DependencyModuleList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Dependencies"
xmlns:properties="clr-namespace:Dependencies.Properties"
xmlns:util="clr-namespace:Wpf.Util"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Style="{StaticResource DependencyCustomListViewStyle}"
SearchListFilter="ModuleName"
CopyHandler="ModuleCopyHandler"
PreviewMouseLeftButtonUp="OnSelectedModuleChanged"
>
<local:DependencyCustomListView.Resources>
<local:ImageToHeaderConverter x:Key="img"/>
<local:OverlayImageToHeaderConverter x:Key="img_overlay"/>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header="Highlight Matching Module In Tree"
Command="{Binding DataContext.DoFindModuleInTreeCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter ="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu} }"
InputGestureText="Ctrl+M"
IsEnabled="True" />
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem HeaderStringFormat= "Copy {0:s}"
Header = "{Binding DataContext.ModuleName, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"
Command="{Binding Path=DataContext.CopyValue, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid},AncestorLevel=1 }}"
CommandParameter ="{Binding DataContext.ModuleName, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid }}"
InputGestureText="Ctrl+C"
IsEnabled="True"/>
<MenuItem Header="Select All"
Command="ApplicationCommands.SelectAll"
IsEnabled="True"
/>
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem x:Name="FullPathItemModules" Header="Full Paths" Height="25" InputGestureText="F9" IsCheckable="True" IsChecked="{Binding Source={x:Static properties:Settings.Default}, Path=FullPath, Mode=TwoWay}" Margin="0,0,0.2,0"/>
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem Header="View Module in separate application"
Command="{Binding Path=PlacementTarget.DataContext.OpenNewAppCommand, RelativeSource={RelativeSource AncestorType=ContextMenu} }"
CommandParameter ="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu} }"
InputGestureText="Maj+Enter"
IsEnabled="True" />
<MenuItem Header="View Module in Peviewer"
Command="{Binding Path=PlacementTarget.DataContext.OpenPeviewerCommand, RelativeSource={RelativeSource AncestorType=ContextMenu} }"
CommandParameter ="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu} }"
InputGestureText="Alt+Enter"
IsEnabled="True" />
<Separator Height="3" Margin="-1,0,0,0"/>
<MenuItem x:Name="ModuleSearchOrderItem"
Header="View _Module search order"
Command="{Binding DataContext.ConfigureSearchOrderCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter ="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu} }"
InputGestureText="Maj+M"
IsEnabled="True"/>
</ContextMenu>
</local:DependencyCustomListView.Resources>
<local:DependencyCustomListView.View>
<GridView AllowsColumnReorder="true">
<GridViewColumn Header="" Width="50" util:GridViewSort.PropertyName="Type">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Margin="0,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="24" />
<ColumnDefinition Width="3" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Width="16" Height="16" Margin="0,0,0,0" Source="{Binding Filepath, Converter={StaticResource img}}"></Image>
<Image Grid.Column="0" Width="16" Height="16" Margin="4,0,0,0" Source="{Binding Flags, Converter={StaticResource img_overlay}}"></Image>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Module" Width="300" DisplayMemberBinding="{Binding ModuleName, TargetNullValue='N/A'}" util:GridViewSort.PropertyName="ModuleName" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Machine" Width="60" DisplayMemberBinding="{Binding Cpu, TargetNullValue='N/A'}" util:GridViewSort.PropertyName="Cpu" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Type" Width="150" DisplayMemberBinding="{Binding Type, TargetNullValue='N/A'}" util:GridViewSort.PropertyName="Type" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="File Size" Width="100" DisplayMemberBinding="{Binding Filesize, TargetNullValue='N/A', StringFormat={}0x{0:x08}}" util:GridViewSort.PropertyName="FileSize" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Image Base" Width="100" DisplayMemberBinding="{Binding ImageBase, TargetNullValue='N/A', StringFormat={}0x{0:x08}}" util:GridViewSort.PropertyName="ImageBase" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Virtual Size" Width="100" DisplayMemberBinding="{Binding VirtualSize, TargetNullValue='N/A', StringFormat={}0x{0:x08}}" util:GridViewSort.PropertyName="VirtualSize" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Entry point" Width="100" DisplayMemberBinding="{Binding EntryPoint, TargetNullValue='N/A', StringFormat={}0x{0:x08}}" util:GridViewSort.PropertyName="EntryPoint" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Subsystem" Width="100" DisplayMemberBinding="{Binding Subsystem, TargetNullValue='N/A', StringFormat={}0x{0:x08}}" util:GridViewSort.PropertyName="Subsystem" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Subsystem Ver." Width="100" DisplayMemberBinding="{Binding SubsystemVersion, TargetNullValue='N/A'}" util:GridViewSort.PropertyName="SubsystemVersion" HeaderContainerStyle="{StaticResource LeftAlignHeader}"/>
<GridViewColumn Header="Checksum" Width="200" util:GridViewSort.PropertyName="Checksum" HeaderContainerStyle="{StaticResource LeftAlignHeader}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Right">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding CorrectChecksum , TargetNullValue='False'}" Value="False" >
<Setter Property="Text" Value="{Binding Checksum, StringFormat={}0x{0:x08} (incorrect), TargetNullValue='N/A' }"/>
</DataTrigger>
<DataTrigger Binding="{Binding CorrectChecksum}" Value="True" >
<Setter Property="Text" Value="{Binding Checksum, StringFormat={}0x{0:x08} (correct), TargetNullValue='N/A' }"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</local:DependencyCustomListView.View>
</local:DependencyCustomListView>
================================================
FILE: DependenciesGui/DependencyModuleList.xaml.cs
================================================
using System;
using System.Windows;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Input;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows.Data;
namespace Dependencies
{
public class ModuleCacheKey
{
gitextract_hd4rd2bh/
├── .gitignore
├── ClrPhlib/
│ ├── AssemblyInfo.cpp
│ ├── ClrPhlib.cpp
│ ├── ClrPhlib.manifest
│ ├── ClrPhlib.vcxproj
│ ├── ClrPhlib.vcxproj.filters
│ ├── app.rc
│ ├── include/
│ │ ├── ApiSet.h
│ │ ├── ClrPhSymbolProvider.h
│ │ ├── ClrPhlib.h
│ │ ├── NativeFile.h
│ │ ├── UnmanagedPh.h
│ │ └── UnmanagedSymPrv.h
│ ├── resource.h
│ └── src/
│ ├── managed/
│ │ ├── NativeFile.cpp
│ │ ├── PE.cpp
│ │ ├── PeExport.cpp
│ │ ├── PeImport.cpp
│ │ ├── PhSymbolProvider.cpp
│ │ └── Phlib.cpp
│ └── unmanaged/
│ ├── UnmanagedPE.cpp
│ ├── UnmanagedSymPrv.cpp
│ └── demangle.cpp
├── Dependencies/
│ ├── App.config
│ ├── Dependencies.csproj
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── packages.config
├── Dependencies.sln
├── DependenciesGui/
│ ├── About.xaml
│ ├── About.xaml.cs
│ ├── App.config
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── CustomHeaderViewModel.cs
│ ├── Dependencies.manifest
│ ├── DependenciesGui.csproj
│ ├── DependencyCustomListView.xaml
│ ├── DependencyCustomListView.xaml.cs
│ ├── DependencyExportList.xaml
│ ├── DependencyExportList.xaml.cs
│ ├── DependencyImportList.xaml
│ ├── DependencyImportList.xaml.cs
│ ├── DependencyModuleList.xaml
│ ├── DependencyModuleList.xaml.cs
│ ├── DependencyWindow.xaml
│ ├── DependencyWindow.xaml.cs
│ ├── DragablzCustomHeader.cs
│ ├── DragablzCustomHeader.xaml
│ ├── FilterControl/
│ │ ├── FilterControl.cs
│ │ └── FilterControl.generic.xaml
│ ├── GridViewSort.cs
│ ├── Helpers/
│ │ ├── RelayCommand.cs
│ │ └── SettingBindingHandler.cs
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ ├── Models/
│ │ ├── ModuleInfo.cs
│ │ ├── PeExport.cs
│ │ └── PeImport.cs
│ ├── ModuleSearchOrder.xaml
│ ├── ModuleSearchOrder.xaml.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── SearchFolder.xaml
│ ├── SearchFolder.xaml.cs
│ ├── Settings.cs
│ ├── Shell32IconExtractor.cs
│ ├── UserSettings.xaml
│ ├── UserSettings.xaml.cs
│ └── packages.config
├── DependenciesLib/
│ ├── BinaryCache.cs
│ ├── DependenciesLib.csproj
│ ├── FindPeModule.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── SxsManifest.cs
├── Deploy-Dependencies.ps1
├── LICENSE
├── README.md
├── appveyor.yml
├── nuget.config
├── test/
│ ├── binarycache-test/
│ │ ├── App.config
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── binarycache-test.csproj
│ │ └── packages.config
│ ├── demangler-test/
│ │ ├── App.config
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── demangler-test.csproj
│ │ └── packages.config
│ └── manifest-regress/
│ ├── Test-ManifestRegress.ps1
│ └── schedsvc.dll.manifest
└── third_party/
├── Dragablz/
│ └── Dragablz/
│ ├── CanvasOrganiser.cs
│ ├── ContainerCustomisations.cs
│ ├── Converters/
│ │ ├── BooleanAndToVisibilityConverter.cs
│ │ ├── EqualityToBooleanConverter.cs
│ │ ├── EqualityToVisibilityConverter.cs
│ │ └── ShowDefaultCloseButtonConverter.cs
│ ├── Core/
│ │ ├── CollectionTeaser.cs
│ │ ├── Extensions.cs
│ │ ├── FuncComparer.cs
│ │ ├── HitTest.cs
│ │ ├── InterTabTransfer.cs
│ │ ├── MultiComparer.cs
│ │ ├── Native.cs
│ │ ├── SystemCommand.cs
│ │ ├── TabHeaderDragStartInformation.cs
│ │ └── WindowMessage.cs
│ ├── DefaultInterLayoutClient.cs
│ ├── DefaultInterTabClient.cs
│ ├── Dockablz/
│ │ ├── Branch.cs
│ │ ├── BranchAccessor.cs
│ │ ├── BranchItem.cs
│ │ ├── BranchResult.cs
│ │ ├── CouldBeHeaderedStyleSelector.cs
│ │ ├── DropZone.cs
│ │ ├── DropZoneLocation.cs
│ │ ├── Extensions.cs
│ │ ├── Finder.cs
│ │ ├── FloatRequestedEvent.cs
│ │ ├── FloatTransfer.cs
│ │ ├── FloatingItemSnapShot.cs
│ │ ├── Layout.cs
│ │ ├── LayoutAccessor.cs
│ │ ├── LocationReport.cs
│ │ ├── LocationReportBuilder.cs
│ │ ├── LocationReportException.cs
│ │ ├── LocationSnapShot.cs
│ │ ├── Tiler.cs
│ │ └── TilerCalculator.cs
│ ├── Dragablz.net40.csproj
│ ├── Dragablz.net45.csproj
│ ├── Dragablz.nuspec
│ ├── DragablzColors.cs
│ ├── DragablzDragCompletedEventArgs.cs
│ ├── DragablzDragDeltaEventArgs.cs
│ ├── DragablzDragStartedEventArgs.cs
│ ├── DragablzIcon.cs
│ ├── DragablzItem.cs
│ ├── DragablzItemEventArgs.cs
│ ├── DragablzItemsControl.cs
│ ├── DragablzWindow.cs
│ ├── EmptyHeaderSizingHint.cs
│ ├── HeaderedDragablzItem.cs
│ ├── HeaderedItemViewModel.cs
│ ├── HorizontalOrganiser.cs
│ ├── HorizontalPositionMonitor.cs
│ ├── IInterLayoutClient.cs
│ ├── IInterTabClient.cs
│ ├── IItemsOrganiser.cs
│ ├── IManualInterTabClient.cs
│ ├── INewTabHost.cs
│ ├── InterTabController.cs
│ ├── ItemActionCallbackArgs.cs
│ ├── LocationChangedEventArgs.cs
│ ├── LocationHint.cs
│ ├── MoveItemRequest.cs
│ ├── NewTabHost.cs
│ ├── OrderChangedEventArgs.cs
│ ├── PositionMonitor.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Referenceless/
│ │ ├── AnonymousDisposable.cs
│ │ ├── DefaultDisposable.cs
│ │ ├── Disposable.cs
│ │ ├── ICancelable.cs
│ │ └── SerialDisposable.cs
│ ├── StackOrganiser.cs
│ ├── StackPositionMonitor.cs
│ ├── StoryboardCompletionListener.cs
│ ├── TabEmptiedResponse.cs
│ ├── TabablzControl.cs
│ ├── TabablzHeaderSizeConverter.cs
│ ├── TabablzItemStyleSelector.cs
│ ├── Themes/
│ │ ├── BrushToRadialGradientBrushConverter.cs
│ │ ├── Dockablz.xaml
│ │ ├── Generic.xaml
│ │ ├── MahApps.xaml
│ │ ├── MaterialDesign.xaml
│ │ ├── MaterialDesignAssist.cs
│ │ ├── Ripple.cs
│ │ ├── RippleAssist.cs
│ │ └── SystemCommandIcon.cs
│ ├── Trapezoid.cs
│ ├── VerticalOrganiser.cs
│ └── VerticalPositionMonitor.cs
├── Get-ProcessHackerSources.ps1
├── Ph-d7342929f1426e597b95e0c20a9b9651d406f410-__acrt_fp_format-bug-and-specify-CLR-compilation.patch
├── Ph-dc6a8a94f7e4b381090b46eb8e1b9fd7de052dbe-__acrt_fp_format-bug-and-specify-CLR-compilation.patch
├── demumble/
│ ├── CMakeLists.txt
│ ├── LICENSE
│ ├── README.md
│ ├── RELEASING
│ ├── demumble.vcxproj
│ ├── demumble.vcxproj.filters
│ └── third_party/
│ ├── libcxxabi/
│ │ ├── LICENSE.txt
│ │ └── cxa_demangle.cpp
│ └── wine/
│ ├── LICENSE.txt
│ └── undname.c
├── llvm-demangle/
│ ├── README.md
│ ├── include/
│ │ └── llvm/
│ │ └── Demangle/
│ │ ├── Compiler.h
│ │ ├── Demangle.h
│ │ ├── ItaniumDemangle.h
│ │ ├── StringView.h
│ │ └── Utility.h
│ ├── lib/
│ │ └── Demangle/
│ │ ├── CMakeLists.txt
│ │ ├── ItaniumDemangle.cpp
│ │ ├── LLVMBuild.txt
│ │ ├── MicrosoftDemangle.cpp
│ │ ├── MicrosoftDemangleNodes.cpp
│ │ └── MicrosoftDemangleNodes.h
│ ├── llvm-demangle.vcxproj
│ └── llvm-demangle.vcxproj.filters
├── phlib/
│ ├── apiimport.c
│ ├── appresolver.c
│ ├── avltree.c
│ ├── basesup.c
│ ├── circbuf.c
│ ├── circbuf_i.h
│ ├── colorbox.c
│ ├── cpysave.c
│ ├── data.c
│ ├── dspick.c
│ ├── emenu.c
│ ├── error.c
│ ├── extlv.c
│ ├── fastlock.c
│ ├── filepool.c
│ ├── filestream.c
│ ├── format.c
│ ├── format_i.h
│ ├── global.c
│ ├── graph.c
│ ├── guisup.c
│ ├── handle.c
│ ├── hexedit.c
│ ├── hndlinfo.c
│ ├── icotobmp.c
│ ├── include/
│ │ ├── apiimport.h
│ │ ├── appresolver.h
│ │ ├── appresolverp.h
│ │ ├── circbuf.h
│ │ ├── circbuf_h.h
│ │ ├── colorbox.h
│ │ ├── cpysave.h
│ │ ├── dltmgr.h
│ │ ├── dspick.h
│ │ ├── emenu.h
│ │ ├── exlf.h
│ │ ├── fastlock.h
│ │ ├── filepool.h
│ │ ├── filepoolp.h
│ │ ├── filestream.h
│ │ ├── filestreamp.h
│ │ ├── graph.h
│ │ ├── guisup.h
│ │ ├── guisupp.h
│ │ ├── handle.h
│ │ ├── handlep.h
│ │ ├── hexedit.h
│ │ ├── hexeditp.h
│ │ ├── hndlinfo.h
│ │ ├── json.h
│ │ ├── kphapi.h
│ │ ├── kphuser.h
│ │ ├── kphuserp.h
│ │ ├── lsasup.h
│ │ ├── mapimg.h
│ │ ├── ph.h
│ │ ├── phbase.h
│ │ ├── phbasesup.h
│ │ ├── phconfig.h
│ │ ├── phdata.h
│ │ ├── phintrnl.h
│ │ ├── phnative.h
│ │ ├── phnativeinl.h
│ │ ├── phnet.h
│ │ ├── phsup.h
│ │ ├── phutil.h
│ │ ├── provider.h
│ │ ├── queuedlock.h
│ │ ├── ref.h
│ │ ├── refp.h
│ │ ├── secedit.h
│ │ ├── seceditp.h
│ │ ├── settings.h
│ │ ├── svcsup.h
│ │ ├── symprv.h
│ │ ├── symprvp.h
│ │ ├── templ.h
│ │ ├── treenew.h
│ │ ├── treenewp.h
│ │ ├── verify.h
│ │ ├── verifyp.h
│ │ ├── workqueue.h
│ │ └── workqueuep.h
│ ├── json.c
│ ├── jsonc/
│ │ ├── AUTHORS
│ │ ├── COPYING
│ │ ├── ChangeLog
│ │ ├── arraylist.c
│ │ ├── arraylist.h
│ │ ├── bits.h
│ │ ├── config.h
│ │ ├── config.h.in
│ │ ├── debug.c
│ │ ├── debug.h
│ │ ├── json.h
│ │ ├── json_c_version.c
│ │ ├── json_c_version.h
│ │ ├── json_config.h
│ │ ├── json_inttypes.h
│ │ ├── json_object.c
│ │ ├── json_object.h
│ │ ├── json_object_iterator.c
│ │ ├── json_object_iterator.h
│ │ ├── json_object_private.h
│ │ ├── json_tokener.c
│ │ ├── json_tokener.h
│ │ ├── json_util.c
│ │ ├── json_util.h
│ │ ├── libjson.c
│ │ ├── linkhash.c
│ │ ├── linkhash.h
│ │ ├── math_compat.h
│ │ ├── printbuf.c
│ │ ├── printbuf.h
│ │ ├── random_seed.c
│ │ └── random_seed.h
│ ├── kph.c
│ ├── kphdata.c
│ ├── lsasup.c
│ ├── mapexlf.c
│ ├── mapimg.c
│ ├── maplib.c
│ ├── md5.c
│ ├── md5.h
│ ├── mxml/
│ │ ├── COPYING
│ │ ├── config.h
│ │ ├── mxml-attr.c
│ │ ├── mxml-entity.c
│ │ ├── mxml-file.c
│ │ ├── mxml-get.c
│ │ ├── mxml-index.c
│ │ ├── mxml-node.c
│ │ ├── mxml-private.c
│ │ ├── mxml-private.h
│ │ ├── mxml-search.c
│ │ ├── mxml-set.c
│ │ ├── mxml-string.c
│ │ └── mxml.h
│ ├── native.c
│ ├── phlib.vcxproj
│ ├── phlib.vcxproj.filters
│ ├── provider.c
│ ├── queuedlock.c
│ ├── ref.c
│ ├── secdata.c
│ ├── secedit.c
│ ├── settings.c
│ ├── sha.c
│ ├── sha.h
│ ├── sha256.c
│ ├── sha256.h
│ ├── svcsup.c
│ ├── symprv.c
│ ├── sync.c
│ ├── treenew.c
│ ├── util.c
│ ├── verify.c
│ └── workqueue.c
└── phnt/
├── README.md
├── include/
│ ├── ntdbg.h
│ ├── ntexapi.h
│ ├── ntgdi.h
│ ├── ntioapi.h
│ ├── ntkeapi.h
│ ├── ntldr.h
│ ├── ntlpcapi.h
│ ├── ntmisc.h
│ ├── ntmmapi.h
│ ├── ntnls.h
│ ├── ntobapi.h
│ ├── ntpebteb.h
│ ├── ntpfapi.h
│ ├── ntpnpapi.h
│ ├── ntpoapi.h
│ ├── ntpsapi.h
│ ├── ntregapi.h
│ ├── ntrtl.h
│ ├── ntsam.h
│ ├── ntseapi.h
│ ├── ntsmss.h
│ ├── nttmapi.h
│ ├── nttp.h
│ ├── ntwow64.h
│ ├── ntxcapi.h
│ ├── ntzwapi.h
│ ├── phnt.h
│ ├── phnt_ntdef.h
│ ├── phnt_windows.h
│ ├── subprocesstag.h
│ └── winsta.h
└── zw_options.txt
Showing preview only (345K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4271 symbols across 285 files)
FILE: ClrPhlib/include/ApiSet.h
type API_SET_VALUE_ENTRY_REDIRECTION_V2 (line 11) | typedef struct _API_SET_VALUE_ENTRY_REDIRECTION_V2 {
type API_SET_VALUE_ENTRY_V2 (line 18) | typedef struct _API_SET_VALUE_ENTRY_V2 {
type API_SET_NAMESPACE_ENTRY_V2 (line 23) | typedef struct _API_SET_NAMESPACE_ENTRY_V2 {
type API_SET_NAMESPACE_V2 (line 29) | typedef struct _API_SET_NAMESPACE_V2 {
type API_SET_VALUE_ENTRY_REDIRECTION_V4 (line 38) | typedef struct _API_SET_VALUE_ENTRY_REDIRECTION_V4 {
type API_SET_VALUE_ENTRY_V4 (line 46) | typedef struct _API_SET_VALUE_ENTRY_V4 {
type API_SET_NAMESPACE_ENTRY_V4 (line 52) | typedef struct _API_SET_NAMESPACE_ENTRY_V4 {
type API_SET_NAMESPACE_V4 (line 61) | typedef struct _API_SET_NAMESPACE_V4 {
type API_SET_HASH_ENTRY_V6 (line 72) | typedef struct _API_SET_HASH_ENTRY_V6 {
type API_SET_NAMESPACE_ENTRY_V6 (line 77) | typedef struct _API_SET_NAMESPACE_ENTRY_V6 {
type API_SET_VALUE_ENTRY_V6 (line 86) | typedef struct _API_SET_VALUE_ENTRY_V6 {
type API_SET_NAMESPACE_V6 (line 94) | typedef struct _API_SET_NAMESPACE_V6 {
type API_SET_NAMESPACE (line 106) | typedef struct _API_SET_NAMESPACE {
FILE: ClrPhlib/include/ClrPhSymbolProvider.h
function class (line 9) | class PhSymbolProvider
FILE: ClrPhlib/include/ClrPhlib.h
function class (line 16) | class CLRPH_ARCH
FILE: ClrPhlib/include/NativeFile.h
function namespace (line 10) | namespace Dependencies {
FILE: ClrPhlib/include/UnmanagedPh.h
function class (line 10) | class UnmanagedPE {
FILE: ClrPhlib/include/UnmanagedSymPrv.h
function class (line 12) | class UnmanagedSymPrv {
FILE: ClrPhlib/src/managed/Phlib.cpp
function BOOLEAN (line 33) | BOOLEAN NTAPI PhEnumDirectoryObjectsCallback(
function PAPI_SET_NAMESPACE (line 111) | PAPI_SET_NAMESPACE GetApiSetNamespace()
type ApiSetSchemaImpl (line 140) | struct ApiSetSchemaImpl
function private (line 151) | private ref class EmptyApiSetSchema sealed : ApiSetSchema
function private (line 252) | private ref class V6ApiSetSchema sealed : ApiSetSchema
FILE: ClrPhlib/src/unmanaged/UnmanagedSymPrv.cpp
function _Inout_ (line 10) | _Inout_ PWSTR DefaultDbgHelpPath
function _Ret_maybenull_ (line 39) | _Ret_maybenull_
function VOID (line 68) | VOID PvpLoadDbgHelpFromPath(
function BOOLEAN (line 122) | BOOLEAN PvpLoadDbgHelp(
function UnmanagedSymPrv (line 165) | UnmanagedSymPrv* UnmanagedSymPrv::Create()
FILE: ClrPhlib/src/unmanaged/demangle.cpp
function DemanglerDebugOneArg (line 18) | void DemanglerDebugOneArg(wchar_t *Format, wchar_t *Arg0)
function DemanglerDebugTwoArg (line 35) | void DemanglerDebugTwoArg(wchar_t *Format, wchar_t *Arg0, wchar_t *Arg1)
function DemumbleDemangleName (line 54) | bool DemumbleDemangleName(
function LLVMItaniumDemangleName (line 105) | bool LLVMItaniumDemangleName(
function LLVMMicrosoftDemangleName (line 156) | bool LLVMMicrosoftDemangleName(
function UndecorateSymbolDemangleName (line 207) | bool UndecorateSymbolDemangleName(
FILE: Dependencies/Program.cs
type IPrettyPrintable (line 16) | interface IPrettyPrintable
method PrettyPrint (line 18) | void PrettyPrint();
class NtKnownDlls (line 24) | class NtKnownDlls : IPrettyPrintable
method NtKnownDlls (line 26) | public NtKnownDlls()
method PrettyPrint (line 32) | public void PrettyPrint()
class NtApiSet (line 63) | class NtApiSet : IPrettyPrintable
method NtApiSet (line 65) | public NtApiSet()
method NtApiSet (line 70) | public NtApiSet(PE ApiSetSchemaDll)
method PrettyPrint (line 75) | public void PrettyPrint()
class PEManifest (line 95) | class PEManifest : IPrettyPrintable
method PEManifest (line 98) | public PEManifest(PE _Application)
method PrettyPrint (line 128) | public void PrettyPrint()
class PEImports (line 156) | class PEImports : IPrettyPrintable
method PEImports (line 158) | public PEImports(PE _Application)
method PrettyPrint (line 164) | public void PrettyPrint()
class PEExports (line 196) | class PEExports : IPrettyPrintable
method PEExports (line 198) | public PEExports(PE _Application)
method PrettyPrint (line 204) | public void PrettyPrint()
class SxsDependencies (line 225) | class SxsDependencies : IPrettyPrintable
method SxsDependencies (line 227) | public SxsDependencies(PE _Application)
method PrettyPrint (line 233) | public void PrettyPrint()
class RethrownException (line 257) | public class RethrownException : Exception
method RethrownException (line 259) | public RethrownException(Exception e)
class PEModuleReferences (line 267) | internal class PEModuleReferences : IPrettyPrintable
method PEModuleReferences (line 269) | public PEModuleReferences(PE _Application)
method PrettyPrint (line 287) | public void PrettyPrint()
class PEAssemblyReferences (line 304) | internal class PEAssemblyReferences : IPrettyPrintable
method PEAssemblyReferences (line 306) | public PEAssemblyReferences(PE _Application)
method PrettyPrint (line 324) | public void PrettyPrint()
class ImportDll (line 354) | class ImportDll
method From (line 358) | public static ImportDll From(PeImportDll i)
method From (line 365) | public static ImportDll From(ModuleReference m)
class PeDependencyItem (line 374) | class PeDependencyItem : IPrettyPrintable
method PeDependencyItem (line 377) | public PeDependencyItem(PeDependencies _Root, string _ModuleName, str...
method LoadPe (line 400) | public void LoadPe()
method ResolveDependencies (line 428) | public void ResolveDependencies()
method IsNewModule (line 494) | public bool IsNewModule()
method PrettyPrint (line 499) | public void PrettyPrint()
method BasicPrettyPrint (line 521) | public void BasicPrettyPrint(int? OverrideRecursionLevel = null)
method SafeExecutor (line 533) | private void SafeExecutor(Action action)
method SafeExecutor (line 538) | private T SafeExecutor<T>(Func<T> action)
class ModuleCacheKey (line 589) | class ModuleCacheKey : Tuple<string, string>
method ModuleCacheKey (line 591) | public ModuleCacheKey(string Name, string Filepath)
class ModuleEntries (line 597) | class ModuleEntries : Dictionary<ModuleCacheKey, PeDependencyItem>, IPre...
method PrettyPrint (line 599) | public void PrettyPrint()
class PeDependencies (line 609) | class PeDependencies : IPrettyPrintable
method PeDependencies (line 611) | public PeDependencies(PE Application, int recursion_depth)
method ResolveModule (line 627) | public Tuple<ModuleSearchStrategy, PE> ResolveModule(string ModuleName)
method isModuleCached (line 635) | public bool isModuleCached(string ModuleName, string ModuleFilepath)
method GetModuleItem (line 642) | public PeDependencyItem GetModuleItem(string ModuleName, string Module...
method PrettyPrint (line 654) | public void PrettyPrint()
method VisitModule (line 660) | public bool VisitModule(string ModuleName, string ModuleFilepath)
class Program (line 693) | class Program
method PrettyPrinter (line 695) | public static void PrettyPrinter(IPrettyPrintable obj)
method JsonPrinter (line 700) | public static void JsonPrinter(IPrettyPrintable obj)
method DumpKnownDlls (line 711) | public static void DumpKnownDlls(Action<IPrettyPrintable> Printer)
method DumpApiSets (line 717) | public static void DumpApiSets(Action<IPrettyPrintable> Printer)
method DumpApiSets (line 723) | public static void DumpApiSets(PE Application, Action<IPrettyPrintable...
method DumpManifest (line 729) | public static void DumpManifest(PE Application, Action<IPrettyPrintabl...
method DumpSxsEntries (line 735) | public static void DumpSxsEntries(PE Application, Action<IPrettyPrinta...
method DumpExports (line 742) | public static void DumpExports(PE Pe, Action<IPrettyPrintable> Printer...
method DumpImports (line 748) | public static void DumpImports(PE Pe, Action<IPrettyPrintable> Printer...
method DumpAssemblyReferences (line 753) | public static void DumpAssemblyReferences(PE Pe, Action<IPrettyPrintab...
method DumpModuleReferences (line 759) | public static void DumpModuleReferences(PE Pe, Action<IPrettyPrintable...
method DumpDependencyChain (line 765) | public static void DumpDependencyChain(PE Pe, Action<IPrettyPrintable>...
method DumpModules (line 771) | public static void DumpModules(PE Pe, Action<IPrettyPrintable> Printer...
method DumpUsage (line 783) | public static void DumpUsage()
method GetObjectPrinter (line 810) | static Action<IPrettyPrintable> GetObjectPrinter(bool export_as_json)
method Main (line 821) | static void Main(string[] args)
FILE: DependenciesGui/About.xaml.cs
class About (line 15) | public partial class About : Window
method About (line 17) | public About()
method Uri_RequestNavigate (line 23) | private void Uri_RequestNavigate(object sender, RequestNavigateEventAr...
method Uri_CheckUpdates (line 36) | private async void Uri_CheckUpdates(object sender, RequestNavigateEven...
method GetLatestVersion (line 51) | private async Task<string> GetLatestVersion(string url)
FILE: DependenciesGui/App.xaml.cs
class App (line 17) | public partial class App : Application, INotifyPropertyChanged
method OnPropertyChanged (line 36) | protected void OnPropertyChanged(string propertyName)
method App_PropertyChanged (line 41) | private void App_PropertyChanged(object sender, PropertyChangedEventAr...
method LoadBinary (line 49) | public PE LoadBinary(string path)
method App_Startup (line 72) | void App_Startup(object sender, StartupEventArgs e)
method App_Exit (line 113) | void App_Exit(object sender, ExitEventArgs e)
method SetDropDownMenuToBeRightAligned (line 119) | private static void SetDropDownMenuToBeRightAligned()
method AddToRecentDocuments (line 135) | public static void AddToRecentDocuments(String Filename)
FILE: DependenciesGui/CustomHeaderViewModel.cs
class CustomHeaderViewModel (line 11) | public class CustomHeaderViewModel : INotifyPropertyChanged
method OnPropertyChanged (line 40) | protected void OnPropertyChanged(string propertyName)
FILE: DependenciesGui/DependencyCustomListView.xaml.cs
class DependencyCustomListView (line 15) | [TemplatePart(Name = PART_SearchBar, Type = typeof(FilterControl))]
method DependencyCustomListView (line 22) | public DependencyCustomListView()
method OnApplyTemplate (line 48) | public override void OnApplyTemplate()
method AttachToVisualTree (line 56) | private void AttachToVisualTree()
method OnListViewKeyDown (line 65) | protected virtual void OnListViewKeyDown(object sender, System.Windows...
FILE: DependenciesGui/DependencyExportList.xaml.cs
class DependencyExportList (line 14) | public partial class DependencyExportList : DependencyCustomListView
method DependencyExportList (line 18) | public DependencyExportList()
method SetExports (line 23) | public void SetExports(List<PeExport> Exports, PhSymbolProvider SymPrv)
method ExportCopyHandler (line 33) | private string ExportCopyHandler(object SelectedItem)
method ExportListCopySelectedValues (line 43) | private void ExportListCopySelectedValues(object sender, RoutedEventAr...
method ResetAutoSortProperty (line 67) | public void ResetAutoSortProperty()
FILE: DependenciesGui/DependencyImportList.xaml.cs
class DependencyImportList (line 14) | public partial class DependencyImportList : DependencyCustomListView
method DependencyImportList (line 18) | public DependencyImportList()
method SetImports (line 23) | public void SetImports(string ModuleFilepath, List<PeExport> Exports, ...
method SetRootImports (line 36) | public void SetRootImports(List<PeImportDll> Imports, PhSymbolProvider...
method ImportCopyHandler (line 53) | private string ImportCopyHandler(object SelectedItem)
method ImportListCopySelectedValues (line 63) | private void ImportListCopySelectedValues(object sender, RoutedEventAr...
method ResetAutoSortProperty (line 87) | public void ResetAutoSortProperty()
FILE: DependenciesGui/DependencyModuleList.xaml.cs
class ModuleCacheKey (line 14) | public class ModuleCacheKey
method ModuleCacheKey (line 16) | public ModuleCacheKey(string _Name, string _Filepath, ModuleFlag _Flag...
method ModuleCacheKey (line 23) | public ModuleCacheKey(ImportContext import)
method GetHashCode (line 31) | public override int GetHashCode()
class ModulesCache (line 50) | public class ModulesCache : Dictionary<ModuleCacheKey, DisplayModuleInfo>
class DependencyModuleList (line 59) | public partial class DependencyModuleList : DependencyCustomListView
method DependencyModuleList (line 86) | public DependencyModuleList()
method AddModule (line 92) | public void AddModule(DisplayModuleInfo NewModule)
method OnSelectedModuleChanged (line 108) | private void OnSelectedModuleChanged(object sender, MouseButtonEventAr...
method ModuleCopyHandler (line 113) | private string ModuleCopyHandler(object SelectedItem)
FILE: DependenciesGui/DependencyWindow.xaml.cs
type ImportContext (line 22) | public struct ImportContext
class TreeBuildingBehaviour (line 48) | public class TreeBuildingBehaviour : IValueConverter
type DependencyTreeBehaviour (line 50) | public enum DependencyTreeBehaviour
method GetGlobalBehaviour (line 58) | public static DependencyTreeBehaviour GetGlobalBehaviour()
method Convert (line 69) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 85) | public object ConvertBack(object value, Type targetType, object parame...
class BinaryCacheOption (line 108) | public class BinaryCacheOption : IValueConverter
type BinaryCacheOptionValue (line 110) | [TypeConverter(typeof(EnumToStringUsingDescription))]
method GetGlobalBehaviour (line 120) | public static BinaryCacheOptionValue GetGlobalBehaviour()
method Convert (line 131) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 146) | public object ConvertBack(object value, Type targetType, object parame...
class EnumToStringUsingDescription (line 162) | public class EnumToStringUsingDescription : TypeConverter
method CanConvertFrom (line 164) | public override bool CanConvertFrom(ITypeDescriptorContext context, Ty...
method CanConvertTo (line 169) | public override bool CanConvertTo(ITypeDescriptorContext context, Type...
method ConvertFrom (line 174) | public override object ConvertFrom(ITypeDescriptorContext context, Sys...
method ConvertTo (line 179) | public override object ConvertTo(ITypeDescriptorContext context, Syste...
type DependencyNodeContext (line 201) | public struct DependencyNodeContext
method DependencyNodeContext (line 203) | public DependencyNodeContext(DependencyNodeContext other)
class ModuleTreeViewItem (line 226) | public class ModuleTreeViewItem : TreeViewItem, INotifyPropertyChanged
method ModuleTreeViewItem (line 230) | public ModuleTreeViewItem()
method ModuleTreeViewItem (line 237) | public ModuleTreeViewItem(ModuleTreeViewItem Parent)
method ModuleTreeViewItem (line 244) | public ModuleTreeViewItem(ModuleTreeViewItem Other, ModuleTreeViewItem...
method OnPropertyChanged (line 253) | public virtual void OnPropertyChanged(string propertyName)
method ModuleTreeViewItem_PropertyChanged (line 258) | private void ModuleTreeViewItem_PropertyChanged(object sender, Propert...
method GetTreeNodeHeaderName (line 269) | public string GetTreeNodeHeaderName(bool FullPath)
method VerifyModuleImports (line 383) | private bool VerifyModuleImports()
method OpenPeviewer (line 446) | public bool OpenPeviewer(object Context)
class DependencyWindow (line 513) | public partial class DependencyWindow : TabItem
method DependencyWindow (line 530) | public DependencyWindow(String Filename, List<string> CustomSearchFold...
method InitializeView (line 548) | public void InitializeView()
method ResolveImport (line 613) | private ImportContext ResolveImport(PeImportDll DllImport)
method TriggerWarningOnAppvIsvImports (line 675) | private void TriggerWarningOnAppvIsvImports(string DllImportName)
method ProcessAppInitDlls (line 693) | private void ProcessAppInitDlls(Dictionary<string, ImportContext> NewT...
method ProcessClrImports (line 768) | private void ProcessClrImports(Dictionary<string, ImportContext> NewTr...
method ProcessPe (line 924) | private void ProcessPe(Dictionary<string, ImportContext> NewTreeContex...
class BacklogImport (line 955) | private class BacklogImport : Tuple<ModuleTreeViewItem, string>
method BacklogImport (line 957) | public BacklogImport(ModuleTreeViewItem Node, string Filepath)
method ConstructDependencyTree (line 963) | private void ConstructDependencyTree(ModuleTreeViewItem RootNode, stri...
method ConstructDependencyTree (line 975) | private void ConstructDependencyTree(ModuleTreeViewItem RootNode, PE C...
method ResolveDummyEntries (line 1124) | private void ResolveDummyEntries(object sender, RoutedEventArgs e)
method OnModuleViewSelectedItemChanged (line 1151) | private void OnModuleViewSelectedItemChanged(object sender, RoutedEven...
method OnTreeViewSelectedItemChanged (line 1163) | private void OnTreeViewSelectedItemChanged(object sender, RoutedProper...
method UpdateImportExportLists (line 1211) | private void UpdateImportExportLists(DisplayModuleInfo SelectedModule,...
method LoadImport (line 1237) | public PE LoadImport(string ModuleName, DisplayModuleInfo CurrentModul...
method CollapseOrExpandAllNodes (line 1308) | private void CollapseOrExpandAllNodes(ModuleTreeViewItem Item, bool Ex...
method ExpandAllNodes_Executed (line 1317) | private void ExpandAllNodes_Executed(object sender, ExecutedRoutedEven...
method CollapseAllNodes_Executed (line 1326) | private void CollapseAllNodes_Executed(object sender, ExecutedRoutedEv...
method DoFindModuleInList_Executed (line 1332) | private void DoFindModuleInList_Executed(object sender, ExecutedRouted...
method ExpandAllParentNode (line 1349) | private void ExpandAllParentNode(ModuleTreeViewItem Item)
method FindModuleInTree (line 1363) | private ModuleTreeViewItem FindModuleInTree(ModuleTreeViewItem Item, D...
FILE: DependenciesGui/DragablzCustomHeader.cs
class DragablzCustomHeader (line 18) | public partial class DragablzCustomHeader : UserControl
method DragablzCustomHeader (line 20) | public DragablzCustomHeader()
FILE: DependenciesGui/FilterControl/FilterControl.cs
type DirectionEnum (line 18) | public enum DirectionEnum
class FilterControl (line 27) | [TemplatePart(Name = PART_FilterBox, Type = typeof(TextBox))]
method FilterControl (line 58) | static FilterControl()
method FilterControl (line 73) | public FilterControl()
method OnFilterFiringIntervalChanged (line 174) | private static void OnFilterFiringIntervalChanged(DependencyObject d, ...
method OnApplyTemplate (line 232) | public override void OnApplyTemplate()
method ApplyFilterOnTarget (line 243) | private void ApplyFilterOnTarget()
method ClearFilterOnTarget (line 265) | private void ClearFilterOnTarget()
method RaiseFilterEvent (line 281) | public void RaiseFilterEvent()
method GetDataValue (line 292) | private T GetDataValue<T>(object data, string propertyName)
method AttachToVisualTree (line 309) | private void AttachToVisualTree()
method OnKeyboardGotFocus (line 334) | private void OnKeyboardGotFocus(object sender, KeyboardFocusChangedEve...
method OnControlKeyDown (line 339) | private void OnControlKeyDown(object sender, KeyEventArgs e)
method OnClearButtonClick (line 371) | private void OnClearButtonClick(object sender, RoutedEventArgs e)
method Clear (line 376) | public void Clear()
method OnFilterBoxTextChanged (line 393) | private void OnFilterBoxTextChanged(object sender, TextChangedEventArg...
method OnGotKeyboardFocus (line 416) | private void OnGotKeyboardFocus(object sender, System.Windows.Input.Ke...
method OnLostKeyboardFocus (line 422) | private void OnLostKeyboardFocus(object sender, System.Windows.Input.K...
method OnDispatcherTimerTick (line 430) | private void OnDispatcherTimerTick(object sender, EventArgs e)
class FilterEventArgs (line 451) | public class FilterEventArgs : RoutedEventArgs
method FilterEventArgs (line 465) | public FilterEventArgs()
method FilterEventArgs (line 472) | public FilterEventArgs(RoutedEvent routedEvent, object source) :
method FilterEventArgs (line 477) | public FilterEventArgs(RoutedEvent routedEvent, object source, string ...
class DirectionEventArgs (line 484) | public class DirectionEventArgs : RoutedEventArgs
method DirectionEventArgs (line 492) | public DirectionEventArgs()
method DirectionEventArgs (line 498) | public DirectionEventArgs(RoutedEvent routedEvent, object source) :
method DirectionEventArgs (line 503) | public DirectionEventArgs(RoutedEvent routedEvent, object source, Dire...
FILE: DependenciesGui/GridViewSort.cs
class GridViewSort (line 10) | public class GridViewSort
method GetCommand (line 14) | public static ICommand GetCommand(DependencyObject obj)
method SetCommand (line 19) | public static void SetCommand(DependencyObject obj, ICommand value)
method GetAutoSort (line 53) | public static bool GetAutoSort(DependencyObject obj)
method SetAutoSort (line 58) | public static void SetAutoSort(DependencyObject obj, bool value)
method GetPropertyName (line 94) | public static string GetPropertyName(DependencyObject obj)
method SetPropertyName (line 99) | public static void SetPropertyName(DependencyObject obj, string value)
method GetShowSortGlyph (line 113) | public static bool GetShowSortGlyph(DependencyObject obj)
method SetShowSortGlyph (line 118) | public static void SetShowSortGlyph(DependencyObject obj, bool value)
method GetSortGlyphAscending (line 127) | public static ImageSource GetSortGlyphAscending(DependencyObject obj)
method SetSortGlyphAscending (line 132) | public static void SetSortGlyphAscending(DependencyObject obj, ImageSo...
method GetSortGlyphDescending (line 141) | public static ImageSource GetSortGlyphDescending(DependencyObject obj)
method SetSortGlyphDescending (line 146) | public static void SetSortGlyphDescending(DependencyObject obj, ImageS...
method GetSortedColumnHeader (line 159) | private static GridViewColumnHeader GetSortedColumnHeader(DependencyOb...
method SetSortedColumnHeader (line 164) | private static void SetSortedColumnHeader(DependencyObject obj, GridVi...
method ColumnHeader_Click (line 177) | private static void ColumnHeader_Click(object sender, RoutedEventArgs e)
method GetAncestor (line 209) | public static T GetAncestor<T>(DependencyObject reference) where T : D...
method ApplySort (line 222) | public static void ApplySort(ICollectionView view, string propertyName...
method RemoveSort (line 256) | public static void RemoveSort(ICollectionView view, ListView listView)
method AddSortGlyph (line 266) | private static void AddSortGlyph(GridViewColumnHeader columnHeader, Li...
method RemoveSortGlyph (line 277) | private static void RemoveSortGlyph(GridViewColumnHeader columnHeader)
class SortGlyphAdorner (line 295) | private class SortGlyphAdorner : Adorner
method SortGlyphAdorner (line 301) | public SortGlyphAdorner(GridViewColumnHeader columnHeader, ListSortD...
method GetDefaultGlyph (line 309) | private Geometry GetDefaultGlyph()
method OnRender (line 340) | protected override void OnRender(DrawingContext drawingContext)
FILE: DependenciesGui/Helpers/RelayCommand.cs
class RelayCommand (line 7) | public class RelayCommand : ICommand
method RelayCommand (line 15) | public RelayCommand(Action<object> execute) : this(execute, null) { }
method RelayCommand (line 16) | public RelayCommand(Action<object> execute, Predicate<object> canExecute)
method CanExecute (line 25) | [DebuggerStepThrough]
method Execute (line 35) | public void Execute(object parameter) { _execute(parameter); }
FILE: DependenciesGui/Helpers/SettingBindingHandler.cs
class SettingBindingHandler (line 6) | public class SettingBindingHandler : INotifyPropertyChanged
type EventHandlerInfo (line 9) | public struct EventHandlerInfo
method SettingBindingHandler (line 20) | public SettingBindingHandler()
method AddNewEventHandler (line 26) | public void AddNewEventHandler(string PropertyName, string SettingsNam...
method OnPropertyChanged (line 37) | public virtual void OnPropertyChanged(string propertyName)
method Handler_PropertyChanged (line 42) | private void Handler_PropertyChanged(object sender, PropertyChangedEve...
FILE: DependenciesGui/MainWindow.xaml.cs
class DependenciesInterTabClient (line 20) | public class DependenciesInterTabClient : DefaultInterTabClient
method TabEmptiedHandler (line 28) | public override TabEmptiedResponse TabEmptiedHandler(TabablzControl ta...
class RecentMenuItem (line 42) | public class RecentMenuItem : INotifyPropertyChanged
method RecentMenuItem (line 46) | public RecentMenuItem(string _Filepath)
method RecentMenuItem_PropertyChanged (line 58) | private void RecentMenuItem_PropertyChanged(object sender, PropertyCha...
class MainWindow (line 83) | public partial class MainWindow : Window
method MainWindow (line 102) | public MainWindow()
method OpenNewDependencyWindow (line 134) | public void OpenNewDependencyWindow(String Filename)
method PopulateRecentFilesMenuItems (line 182) | public void PopulateRecentFilesMenuItems()
method AddRecentFilesMenuItem (line 206) | private void AddRecentFilesMenuItem(string Filepath, int index)
method RecentFileCommandBinding_Clicked (line 245) | private void RecentFileCommandBinding_Clicked(object sender, RoutedEve...
method OpenCommandBinding_Executed (line 257) | private void OpenCommandBinding_Executed(object sender, RoutedEventArg...
method ExitCommandBinding_Executed (line 275) | private void ExitCommandBinding_Executed(object sender, RoutedEventArg...
method OpenAboutCommandBinding_Executed (line 280) | private void OpenAboutCommandBinding_Executed(object sender, RoutedEve...
method OpenUserSettingsCommandBinding_Executed (line 287) | private void OpenUserSettingsCommandBinding_Executed(object sender, Ro...
method OpenCustomizeSearchFolderCommand_Executed (line 295) | private void OpenCustomizeSearchFolderCommand_Executed(object sender, ...
method RefreshCommandBinding_Executed (line 311) | private void RefreshCommandBinding_Executed(object sender, RoutedEvent...
method OnClosing (line 326) | protected override void OnClosing(System.ComponentModel.CancelEventArg...
method MainWindow_Drop (line 344) | private void MainWindow_Drop(object sender, System.Windows.DragEventAr...
method MainWindow_TabControlIsEmptyHandler (line 357) | private void MainWindow_TabControlIsEmptyHandler(object sender, Routed...
class BooleanToVisibilityConverter (line 369) | public class BooleanToVisibilityConverter : IValueConverter
method Convert (line 371) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 382) | public object ConvertBack(object value, Type targetType, object parame...
FILE: DependenciesGui/Models/ModuleInfo.cs
type PeTypes (line 10) | [Flags]
type ModuleFlag (line 18) | [Flags]
type ModuleInfo (line 35) | public struct ModuleInfo
class ApiSetNotFoundModuleInfo (line 60) | public class ApiSetNotFoundModuleInfo : NotFoundModuleInfo
method ApiSetNotFoundModuleInfo (line 62) | public ApiSetNotFoundModuleInfo(string ApiSetModuleName, string NotFou...
class NotFoundModuleInfo (line 80) | public class NotFoundModuleInfo : DisplayModuleInfo
method NotFoundModuleInfo (line 82) | public NotFoundModuleInfo(string NotFoundModuleName)
class ApiSetModuleInfo (line 107) | public class ApiSetModuleInfo : DisplayModuleInfo
method ApiSetModuleInfo (line 109) | public ApiSetModuleInfo(string ApiSetModuleName, ref DisplayModuleInfo...
class DisplayModuleInfo (line 148) | public class DisplayModuleInfo : SettingBindingHandler, INotifyPropertyC...
method DisplayModuleInfo (line 151) | public DisplayModuleInfo(string ModuleName)
method DisplayModuleInfo (line 161) | public DisplayModuleInfo(string ModuleName, PE Pe, ModuleSearchStrateg...
method GetPathDisplayName (line 249) | protected string GetPathDisplayName(bool FullPath)
method OpenPeviewer (line 393) | public bool OpenPeviewer(object Module)
FILE: DependenciesGui/Models/PeExport.cs
class DisplayPeExport (line 9) | public class DisplayPeExport : SettingBindingHandler
method DisplayPeExport (line 12) | public DisplayPeExport(
method ToString (line 36) | public override string ToString()
method GetDisplayName (line 105) | protected string GetDisplayName(bool Undecorate)
type PeExportInfo (line 183) | public struct PeExportInfo
FILE: DependenciesGui/Models/PeImport.cs
class DisplayPeImport (line 9) | public class DisplayPeImport : SettingBindingHandler
method DisplayPeImport (line 12) | public DisplayPeImport(
method ToString (line 43) | public override string ToString()
method GetDisplayName (line 125) | protected string GetDisplayName(bool UndecorateName)
method GetPathDisplayName (line 137) | protected string GetPathDisplayName(bool FullPath)
type PeImportInfo (line 210) | public struct PeImportInfo
FILE: DependenciesGui/ModuleSearchOrder.xaml.cs
class ModuleSearchResult (line 13) | public class ModuleSearchResult
class ModuleSearchOrder (line 24) | public partial class ModuleSearchOrder : Window
method ModuleSearchOrder (line 26) | public ModuleSearchOrder(ModulesCache LoadedModules)
FILE: DependenciesGui/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: DependenciesGui/Properties/Settings.Designer.cs
class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
FILE: DependenciesGui/SearchFolder.xaml.cs
class SearchFolderItem (line 19) | public class SearchFolderItem : INotifyPropertyChanged
method OnPropertyChanged (line 23) | protected void OnPropertyChanged(string info)
class SearchFolder (line 48) | public partial class SearchFolder : Window
method SearchFolder (line 54) | public SearchFolder(DependencyWindow SelectedItem)
method OnChangeSearchFolder (line 93) | private void OnChangeSearchFolder(object sender, RoutedEventArgs e)
method OnRemoveSearchFolder (line 112) | private void OnRemoveSearchFolder(object sender, RoutedEventArgs e)
method EnsureSearchFolderHasDummyEntry (line 122) | private void EnsureSearchFolderHasDummyEntry()
method OnBinaryWorkindDirectoryChange (line 138) | private void OnBinaryWorkindDirectoryChange(object sender, RoutedEvent...
method OnCancel (line 152) | private void OnCancel(object sender, RoutedEventArgs e)
method OnValidate (line 157) | private void OnValidate(object sender, RoutedEventArgs e)
method OnNewEntry (line 179) | private void OnNewEntry(object sender, RoutedEventArgs e)
method OnEditEntry (line 195) | private void OnEditEntry(object sender, RoutedEventArgs e)
method OnBrowseEntry (line 217) | private void OnBrowseEntry(object sender, RoutedEventArgs e)
method OnDeleteEntry (line 250) | private void OnDeleteEntry(object sender, RoutedEventArgs e)
method OnMoveUpEntry (line 263) | private void OnMoveUpEntry(object sender, RoutedEventArgs e)
method OnMoveDownEntry (line 289) | private void OnMoveDownEntry(object sender, RoutedEventArgs e)
method SearchFolder_PropertyChanged (line 315) | private void SearchFolder_PropertyChanged(object sender, PropertyChang...
method OnSearchFolderViewSelectedItemChanged (line 327) | private void OnSearchFolderViewSelectedItemChanged(object sender, Rout...
method ChangeSearchFolder (line 340) | private void ChangeSearchFolder(SearchFolderItem Item)
method SearchFolder_DragOver (line 345) | private void SearchFolder_DragOver(object sender, System.Windows.DragE...
method SearchFoldersList_MouseDoubleClick (line 359) | private void SearchFoldersList_MouseDoubleClick(object sender, MouseBu...
method SearchFolder_DragLeave (line 376) | private void SearchFolder_DragLeave(object sender, System.Windows.Drag...
method SearchFolder_Drop (line 382) | private void SearchFolder_Drop(object sender, System.Windows.DragEvent...
FILE: DependenciesGui/Settings.cs
class Settings (line 9) | internal sealed partial class Settings {
method Settings (line 11) | public Settings() {
method SettingChangingEventHandler (line 20) | private void SettingChangingEventHandler(object sender, System.Configu...
method SettingsSavingEventHandler (line 24) | private void SettingsSavingEventHandler(object sender, System.Componen...
FILE: DependenciesGui/Shell32IconExtractor.cs
class ShellIcon (line 18) | public static class ShellIcon
type SHFILEINFO (line 20) | [StructLayout(LayoutKind.Sequential)]
class Win32 (line 32) | class Win32
method SHGetFileInfo (line 38) | [DllImport("shell32.dll")]
method DestroyIcon (line 41) | [DllImport("User32.dll")]
method Wow64DisableWow64FsRedirection (line 44) | [DllImport("kernel32.dll", SetLastError = true)]
method Wow64RevertWow64FsRedirection (line 47) | [DllImport("kernel32.dll", SetLastError = true)]
method IsWow64Process (line 50) | [DllImport("kernel32.dll", SetLastError = true, CallingConvention = ...
method ShellIcon (line 58) | static ShellIcon()
method GetSmallIcon (line 63) | public static Icon GetSmallIcon(string fileName)
method GetLargeIcon (line 68) | public static Icon GetLargeIcon(string fileName)
method GetIcon (line 73) | private static Icon GetIcon(string fileName, uint flags)
class ImageToHeaderConverter (line 110) | public class ImageToHeaderConverter : IValueConverter
method Convert (line 112) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 128) | public object ConvertBack(object value, Type targetType, object parame...
class OverlayImageToHeaderConverter (line 134) | public class OverlayImageToHeaderConverter : IValueConverter
method Convert (line 136) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 167) | public object ConvertBack(object value, Type targetType, object parame...
FILE: DependenciesGui/UserSettings.xaml.cs
class NameDictionaryHelper (line 13) | internal static class NameDictionaryHelper
method GetDisplayName (line 15) | public static string GetDisplayName(LanguageSpecificStringDictionary n...
method GetDisplayName (line 45) | public static string GetDisplayName(IDictionary<CultureInfo, string> n...
method GetRelatedness (line 73) | private static int GetRelatedness(XmlLanguage keyLang, XmlLanguage use...
method TrimSuffix (line 106) | private static string TrimSuffix(string tag)
method IsPrefixOf (line 119) | private static bool IsPrefixOf(string prefix, string tag)
class FontFamilyListItem (line 127) | internal class FontFamilyListItem : TextBlock, IComparable
method FontFamilyListItem (line 131) | public FontFamilyListItem(FontFamily fontFamily)
method ToString (line 147) | public override string ToString()
method CompareTo (line 152) | int IComparable.CompareTo(object obj)
method IsSymbolFont (line 157) | internal static bool IsSymbolFont(FontFamily fontFamily)
method GetDisplayName (line 170) | internal static string GetDisplayName(FontFamily family)
class UserSettings (line 176) | public partial class UserSettings : Window
method UserSettings (line 182) | public UserSettings()
method OnInitialized (line 192) | protected override void OnInitialized(EventArgs e)
method OnCancel (line 203) | private void OnCancel(object sender, RoutedEventArgs e)
method OnValidate (line 208) | private void OnValidate(object sender, RoutedEventArgs e)
method SelectListItem (line 242) | private bool SelectListItem(System.Windows.Controls.ListBox list, obje...
method fontFamilyList_SelectionChanged (line 302) | private void fontFamilyList_SelectionChanged(object sender, SelectionC...
method InitializeFontFamilyList (line 311) | private void InitializeFontFamilyList()
method OnPeviewerPathSettingChange (line 334) | private void OnPeviewerPathSettingChange(object sender, RoutedEventArg...
method NumericOnly (line 353) | private void NumericOnly(System.Object sender, System.Windows.Input.Te...
method IsTextNumeric (line 359) | private static bool IsTextNumeric(string str)
FILE: DependenciesLib/BinaryCache.cs
class BinaryCache (line 17) | public abstract class BinaryCache
method InitializeBinaryCache (line 38) | public static void InitializeBinaryCache(bool UseCache)
method LoadPe (line 69) | public static PE LoadPe(string PePath)
method ResolveModule (line 74) | public static Tuple<ModuleSearchStrategy, PE> ResolveModule(string Mod...
method ResolveModule (line 84) | public static Tuple<ModuleSearchStrategy, PE> ResolveModule(PE RootPe,...
method ResolveModule (line 94) | public static Tuple<ModuleSearchStrategy, PE> ResolveModule(PE RootPe,...
method LookupApiSetLibrary (line 134) | public static string LookupApiSetLibrary(string ImportDllName)
method LookupImport (line 150) | public static bool LookupImport(string ModuleFilePath, string ImportNa...
method LookupImports (line 187) | public static List<Tuple<PeImport, bool>> LookupImports(PeImportDll Pa...
method LookupImports (line 232) | public static List<Tuple<PeImport, bool>> LookupImports(PeImportDll Mo...
method GetBinary (line 276) | public abstract PE GetBinary(string PePath);
method Load (line 279) | public abstract void Load();
method Unload (line 282) | public abstract void Unload();
class BinaryCacheImpl (line 291) | public class BinaryCacheImpl : BinaryCache
method BinaryCacheImpl (line 293) | public BinaryCacheImpl(string ApplicationAppDataPath, int _MaxBinaryCo...
method Load (line 308) | public override void Load()
method Unload (line 348) | public override void Unload()
method GetBinaryAsync (line 385) | public void GetBinaryAsync(string PePath, RunWorkerCompletedEventHandl...
method GetBinary (line 402) | public override PE GetBinary(string PePath)
method GetBinaryHash (line 459) | protected string GetBinaryHash(string PePath)
method UpdateLru (line 464) | protected void UpdateLru(string PeHash)
class BinaryNoCacheImpl (line 491) | public class BinaryNoCacheImpl : BinaryCache
method GetBinary (line 493) | public override PE GetBinary(string PePath)
method Load (line 502) | public override void Load()
method Unload (line 508) | public override void Unload()
FILE: DependenciesLib/FindPeModule.cs
type ModuleSearchStrategy (line 11) | public enum ModuleSearchStrategy
class FindPe (line 36) | public class FindPe
method GetSystemPath (line 38) | public static string GetSystemPath(PE RootPe)
method IsFilepathInvalid (line 51) | static bool IsFilepathInvalid(string Filepath)
method FindPeFromPath (line 68) | static string FindPeFromPath(string ModuleName, List<string> Candidate...
method FindPeFromDefault (line 96) | public static Tuple<ModuleSearchStrategy, string> FindPeFromDefault(PE...
method FindPeFromDefault (line 124) | public static Tuple<ModuleSearchStrategy, string> FindPeFromDefault(PE...
FILE: DependenciesLib/SxsManifest.cs
class SxsEntry (line 14) | public class SxsEntry
method SxsEntry (line 16) | public SxsEntry(string _Name, string _Path, string _Version="", string...
method SxsEntry (line 26) | public SxsEntry(SxsEntry OtherSxsEntry)
method SxsEntry (line 35) | public SxsEntry(XElement SxsAssemblyIdentity, XElement SxsFile, string...
class SxsEntries (line 73) | public class SxsEntries : List<SxsEntry>
method FromSxsAssembly (line 75) | public static SxsEntries FromSxsAssembly(XElement SxsAssembly, XNamesp...
class SxsManifest (line 91) | public class SxsManifest
method SxsFindTargetDll (line 94) | public static SxsEntries SxsFindTargetDll(string AssemblyName, string ...
method ExtractDependenciesFromSxsElement (line 121) | public static SxsEntries ExtractDependenciesFromSxsElement(XElement Sx...
method ExtractDependenciesFromSxsManifestFile (line 326) | public static SxsEntries ExtractDependenciesFromSxsManifestFile(string...
method ExtractDependenciesFromSxsManifest (line 337) | public static SxsEntries ExtractDependenciesFromSxsManifest(System.IO....
method ParseSxsManifest (line 381) | public static XDocument ParseSxsManifest(System.IO.Stream ManifestStream)
method GetSxsEntries (line 422) | public static SxsEntries GetSxsEntries(PE Pe)
FILE: test/binarycache-test/Program.cs
class Program (line 12) | class Program
method ShowHelp (line 14) | static void ShowHelp(OptionSet p)
method Main (line 22) | static void Main(string[] args)
FILE: test/demangler-test/Program.cs
class Demangler (line 15) | public class Demangler : PhSymbolProvider
method Demangler (line 17) | public Demangler(CLRPH_DEMANGLER demangler = CLRPH_DEMANGLER.Default)
method UndecorateName (line 22) | public override Tuple<CLRPH_DEMANGLER, string> UndecorateName(string D...
class Program (line 46) | class Program
method ShowHelp (line 48) | static void ShowHelp(OptionSet p)
method ParseDemanglerName (line 56) | static CLRPH_DEMANGLER ParseDemanglerName(string v)
method TestKnownInputs (line 77) | static bool TestKnownInputs(Demangler SymPrv)
method TestFilepath (line 91) | static bool TestFilepath(string Filepath, Demangler SymPrv)
method Main (line 129) | static void Main(string[] args)
FILE: third_party/Dragablz/Dragablz/CanvasOrganiser.cs
class CanvasOrganiser (line 9) | public class CanvasOrganiser : IItemsOrganiser
method Organise (line 11) | public virtual void Organise(DragablzItemsControl requestor, Size meas...
method Organise (line 16) | public virtual void Organise(DragablzItemsControl requestor, Size meas...
method OrganiseOnMouseDownWithin (line 21) | public virtual void OrganiseOnMouseDownWithin(DragablzItemsControl req...
method OrganiseOnDragStarted (line 32) | public virtual void OrganiseOnDragStarted(DragablzItemsControl request...
method OrganiseOnDrag (line 37) | public virtual void OrganiseOnDrag(DragablzItemsControl requestor, Siz...
method OrganiseOnDragCompleted (line 42) | public virtual void OrganiseOnDragCompleted(DragablzItemsControl reque...
method ConstrainLocation (line 47) | public virtual Point ConstrainLocation(DragablzItemsControl requestor,...
method Measure (line 62) | public virtual Size Measure(DragablzItemsControl requestor, Size avail...
method Sort (line 67) | public virtual IEnumerable<DragablzItem> Sort(IEnumerable<DragablzItem...
FILE: third_party/Dragablz/Dragablz/ContainerCustomisations.cs
class ContainerCustomisations (line 6) | internal class ContainerCustomisations
method ContainerCustomisations (line 12) | public ContainerCustomisations(Func<DragablzItem> getContainerForItemO...
FILE: third_party/Dragablz/Dragablz/Converters/BooleanAndToVisibilityConverter.cs
class BooleanAndToVisibilityConverter (line 9) | public class BooleanAndToVisibilityConverter : IMultiValueConverter
method Convert (line 11) | public object Convert(object[] values, Type targetType, object paramet...
method ConvertBack (line 21) | public object[] ConvertBack(object value, Type[] targetTypes, object p...
method GetBool (line 26) | private static bool GetBool(object value)
FILE: third_party/Dragablz/Dragablz/Converters/EqualityToBooleanConverter.cs
class EqualityToBooleanConverter (line 7) | public class EqualityToBooleanConverter : IValueConverter
method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 14) | public object ConvertBack(object value, Type targetType, object parame...
FILE: third_party/Dragablz/Dragablz/Converters/EqualityToVisibilityConverter.cs
class EqualityToVisibilityConverter (line 12) | public class EqualityToVisibilityConverter : IValueConverter
method Convert (line 14) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 21) | public object ConvertBack(object value, Type targetType, object parame...
FILE: third_party/Dragablz/Dragablz/Converters/ShowDefaultCloseButtonConverter.cs
class ShowDefaultCloseButtonConverter (line 8) | public class ShowDefaultCloseButtonConverter : IMultiValueConverter
method Convert (line 20) | public object Convert(object[] values, Type targetType, object paramet...
method ConvertBack (line 27) | public object[] ConvertBack(object value, Type[] targetTypes, object p...
FILE: third_party/Dragablz/Dragablz/Core/CollectionTeaser.cs
class CollectionTeaser (line 8) | internal class CollectionTeaser
method CollectionTeaser (line 13) | private CollectionTeaser(Action<object> addMethod, Action<object> remo...
method TryCreate (line 19) | public static bool TryCreate(object items, out CollectionTeaser collec...
method Add (line 55) | public void Add(object item)
method Remove (line 60) | public void Remove(object item)
FILE: third_party/Dragablz/Dragablz/Core/FuncComparer.cs
class FuncComparer (line 6) | internal class FuncComparer<TObject> : IComparer<TObject>
method FuncComparer (line 10) | public FuncComparer(Func<TObject, TObject, int> comparer)
method Compare (line 17) | public int Compare(TObject x, TObject y)
FILE: third_party/Dragablz/Dragablz/Core/HitTest.cs
type HitTest (line 6) | internal enum HitTest
FILE: third_party/Dragablz/Dragablz/Core/InterTabTransfer.cs
type InterTabTransferReason (line 9) | internal enum InterTabTransferReason
class InterTabTransfer (line 15) | internal class InterTabTransfer
method InterTabTransfer (line 28) | public InterTabTransfer(object item, DragablzItem originatorContainer,...
method InterTabTransfer (line 47) | public InterTabTransfer(object item, DragablzItem originatorContainer,...
FILE: third_party/Dragablz/Dragablz/Core/MultiComparer.cs
class MultiComparer (line 7) | internal class MultiComparer<TObject> : IComparer<TObject>
method MultiComparer (line 11) | private MultiComparer(FuncComparer<TObject> firstComparer)
method Ascending (line 19) | public static MultiComparer<TObject> Ascending<TAttribute>(Func<TObjec...
method Descending (line 27) | public static MultiComparer<TObject> Descending<TAttribute>(Func<TObje...
method ThenAscending (line 35) | public MultiComparer<TObject> ThenAscending<TAttribute>(Func<TObject, ...
method ThenDescending (line 45) | public MultiComparer<TObject> ThenDescending<TAttribute>(Func<TObject,...
method Compare (line 55) | public int Compare(TObject x, TObject y)
method BuildAscendingComparer (line 62) | private static FuncComparer<TObject> BuildAscendingComparer<TAttribute...
method BuildDescendingComparer (line 70) | private static FuncComparer<TObject> BuildDescendingComparer<TAttribut...
FILE: third_party/Dragablz/Dragablz/Core/Native.cs
class Native (line 10) | internal static class Native
type POINT (line 12) | [StructLayout(LayoutKind.Sequential)]
type RECT (line 24) | [StructLayout(LayoutKind.Sequential)]
method GetCursorPos (line 33) | [DllImport("user32.dll")]
method GetRawCursorPos (line 36) | public static POINT GetRawCursorPos()
method GetCursorPos (line 43) | public static Point GetCursorPos()
method GetDC (line 50) | [DllImport("User32.dll")]
method GetDeviceCaps (line 53) | [DllImport("gdi32.dll")]
method ReleaseDC (line 56) | [DllImport("user32.dll")]
method ToWpf (line 59) | public static Point ToWpf(this Point pixelPoint)
method SortWindowsTopToBottom (line 71) | public static IEnumerable<Window> SortWindowsTopToBottom(IEnumerable<W...
method SetWindowPlacement (line 87) | [DllImport("user32.dll")]
method GetTopWindow (line 91) | [DllImport("User32")]
method GetWindow (line 94) | [DllImport("User32")]
type WINDOWPLACEMENT (line 97) | [Serializable]
method SendMessage (line 109) | [DllImport("user32.dll", CharSet = CharSet.Auto)]
method PostMessage (line 111) | [DllImport("user32.dll", CharSet = CharSet.Auto)]
method DwmGetColorizationParameters (line 115) | [DllImport("dwmapi.dll", EntryPoint = "#127")]
type DWMCOLORIZATIONPARAMS (line 118) | [StructLayout(LayoutKind.Sequential)]
FILE: third_party/Dragablz/Dragablz/Core/SystemCommand.cs
type SystemCommand (line 3) | internal enum SystemCommand
FILE: third_party/Dragablz/Dragablz/Core/TabHeaderDragStartInformation.cs
class TabHeaderDragStartInformation (line 5) | internal class TabHeaderDragStartInformation
method TabHeaderDragStartInformation (line 13) | public TabHeaderDragStartInformation(
FILE: third_party/Dragablz/Dragablz/Core/WindowMessage.cs
type WindowMessage (line 3) | internal enum WindowMessage
type WindowSizingMessage (line 234) | public enum WindowSizingMessage
FILE: third_party/Dragablz/Dragablz/DefaultInterLayoutClient.cs
class DefaultInterLayoutClient (line 14) | public class DefaultInterLayoutClient : IInterLayoutClient
method GetNewHost (line 16) | public INewTabHost<UIElement> GetNewHost(object partition, TabablzCont...
method Clone (line 35) | private static void Clone(DependencyObject from, DependencyObject to)
FILE: third_party/Dragablz/Dragablz/DefaultInterTabClient.cs
class DefaultInterTabClient (line 9) | public class DefaultInterTabClient : IInterTabClient
method GetNewHost (line 11) | public virtual INewTabHost<Window> GetNewHost(IInterTabClient interTab...
method TabEmptiedHandler (line 29) | public virtual TabEmptiedResponse TabEmptiedHandler(TabablzControl tab...
FILE: third_party/Dragablz/Dragablz/Dockablz/Branch.cs
class Branch (line 21) | [TemplatePart(Name = FirstContentPresenterPartName, Type=typeof(ContentP...
method Branch (line 28) | static Branch()
method GetFirstProportion (line 82) | public double GetFirstProportion()
method OnApplyTemplate (line 87) | public override void OnApplyTemplate()
FILE: third_party/Dragablz/Dragablz/Dockablz/BranchAccessor.cs
class BranchAccessor (line 11) | public class BranchAccessor
method BranchAccessor (line 19) | public BranchAccessor(Branch branch)
method FindTabablzControl (line 38) | private static TabablzControl FindTabablzControl(object item, Dependen...
method Visit (line 78) | public BranchAccessor Visit(BranchItem childItem,
FILE: third_party/Dragablz/Dragablz/Dockablz/BranchItem.cs
type BranchItem (line 3) | public enum BranchItem
FILE: third_party/Dragablz/Dragablz/Dockablz/BranchResult.cs
class BranchResult (line 5) | public class BranchResult
method BranchResult (line 10) | public BranchResult(Branch branch, TabablzControl tabablzControl)
FILE: third_party/Dragablz/Dragablz/Dockablz/CouldBeHeaderedStyleSelector.cs
class CouldBeHeaderedStyleSelector (line 6) | public class CouldBeHeaderedStyleSelector : StyleSelector
method SelectStyle (line 12) | public override Style SelectStyle(object item, DependencyObject contai...
FILE: third_party/Dragablz/Dragablz/Dockablz/DropZone.cs
class DropZone (line 6) | public class DropZone : Control
method DropZone (line 8) | static DropZone()
FILE: third_party/Dragablz/Dragablz/Dockablz/DropZoneLocation.cs
type DropZoneLocation (line 3) | public enum DropZoneLocation
FILE: third_party/Dragablz/Dragablz/Dockablz/Extensions.cs
class Extensions (line 6) | public static class Extensions
method Query (line 13) | public static LayoutAccessor Query(this Layout layout)
method Visit (line 30) | public static LayoutAccessor Visit<TContext>(
method Visit (line 59) | public static BranchAccessor Visit<TContext>(
method WrapVisitor (line 79) | private static Action<TVisitArg> WrapVisitor<TContext, TVisitArg>(TCon...
FILE: third_party/Dragablz/Dragablz/Dockablz/Finder.cs
class Finder (line 5) | internal static class Finder
method Find (line 7) | internal static LocationReport Find(TabablzControl tabablzControl)
method BranchVisitor (line 33) | private static void BranchVisitor(LocationReportBuilder locationReport...
method TabablzControlVisitor (line 47) | private static void TabablzControlVisitor(LocationReportBuilder locati...
FILE: third_party/Dragablz/Dragablz/Dockablz/FloatRequestedEvent.cs
class FloatRequestedEventArgs (line 12) | public class FloatRequestedEventArgs : DragablzItemEventArgs
method FloatRequestedEventArgs (line 14) | public FloatRequestedEventArgs(RoutedEvent routedEvent, object source,...
method FloatRequestedEventArgs (line 18) | public FloatRequestedEventArgs(RoutedEvent routedEvent, DragablzItem d...
FILE: third_party/Dragablz/Dragablz/Dockablz/FloatTransfer.cs
class FloatTransfer (line 5) | internal class FloatTransfer
method FloatTransfer (line 11) | public FloatTransfer(double width, double height, object content)
method TakeSnapshot (line 20) | public static FloatTransfer TakeSnapshot(DragablzItem dragablzItem, Ta...
FILE: third_party/Dragablz/Dragablz/Dockablz/FloatingItemSnapShot.cs
class FloatingItemSnapShot (line 14) | internal class FloatingItemSnapShot
method FloatingItemSnapShot (line 21) | public FloatingItemSnapShot(object content, Rect location, int zIndex,...
method Take (line 31) | public static FloatingItemSnapShot Take(DragablzItem dragablzItem)
method Apply (line 42) | public void Apply(DragablzItem dragablzItem)
FILE: third_party/Dragablz/Dragablz/Dockablz/Layout.cs
class Layout (line 19) | [TemplatePart(Name = TopDropZonePartName, Type = typeof(DropZone))]
method Layout (line 50) | static Layout()
method Layout (line 59) | public Layout()
method GetLoadedInstances (line 104) | public static IEnumerable<Layout> GetLoadedInstances()
method Find (line 114) | public static LocationReport Find(TabablzControl tabablzControl)
method Branch (line 129) | public static BranchResult Branch(TabablzControl tabablzControl, Orien...
method Branch (line 143) | public static BranchResult Branch(TabablzControl tabablzControl, Orien...
method Branch (line 158) | public static BranchResult Branch(TabablzControl tabablzControl, Tabab...
method IsContainedWithinBranch (line 211) | internal static bool IsContainedWithinBranch(DependencyObject dependen...
method SetIsFloatingInLayout (line 368) | private static void SetIsFloatingInLayout(DependencyObject element, bo...
method GetIsFloatingInLayout (line 373) | public static bool GetIsFloatingInLayout(DependencyObject element)
method SetIsTopLeftItem (line 391) | private static void SetIsTopLeftItem(DependencyObject element, bool va...
method GetIsTopLeftItem (line 399) | public static bool GetIsTopLeftItem(DependencyObject element)
method OnApplyTemplate (line 405) | public override void OnApplyTemplate()
method FloatingDragablzItems (line 420) | internal IEnumerable<DragablzItem> FloatingDragablzItems()
method RestoreFloatingItemSnapShots (line 425) | internal static void RestoreFloatingItemSnapShots(DependencyObject anc...
method ItemDragStarted (line 438) | private static void ItemDragStarted(object sender, DragablzDragStarted...
method SetupParticipatingLayouts (line 444) | private static void SetupParticipatingLayouts(DragablzItem dragablzItem)
method MonitorDropZones (line 461) | private void MonitorDropZones(Point cursorPos)
method TryGetSourceTabControl (line 488) | private static bool TryGetSourceTabControl(DragablzItem dragablzItem, ...
method Branch (line 498) | private void Branch(DropZoneLocation location, DragablzItem sourceDrag...
method ConsolidateBranch (line 570) | internal static bool ConsolidateBranch(DependencyObject redundantNode)
method FindLayoutOrBranchOwner (line 601) | private static object FindLayoutOrBranchOwner(DependencyObject node, o...
method Branch (line 624) | private static BranchResult Branch(Orientation orientation, double pro...
method ItemDragCompleted (line 667) | private static void ItemDragCompleted(object sender, DragablzDragCompl...
method Float (line 690) | private static void Float(Layout layout, DragablzItem dragablzItem)
method PreviewItemDragDelta (line 716) | private static void PreviewItemDragDelta(object sender, DragablzDragDe...
method PrepareFloatingContainerForItemOverride (line 733) | private void PrepareFloatingContainerForItemOverride(DependencyObject ...
method GetFloatingContainerForItemOverride (line 769) | private DragablzItem GetFloatingContainerForItemOverride()
method ClearingFloatingContainerForItemOverride (line 777) | private static void ClearingFloatingContainerForItemOverride(Dependenc...
method TileFloatingItemsExecuted (line 782) | private void TileFloatingItemsExecuted(object sender, ExecutedRoutedEv...
method TileFloatingItemsHorizontallyExecuted (line 788) | private void TileFloatingItemsHorizontallyExecuted(object sender, Exec...
method TileFloatingItemsVerticallyExecuted (line 794) | private void TileFloatingItemsVerticallyExecuted(object sender, Execut...
method SetFloatingItemState (line 803) | public static void SetFloatingItemState(DependencyObject element, Wind...
method GetFloatingItemState (line 808) | public static WindowState GetFloatingItemState(DependencyObject element)
method SetLocationSnapShot (line 816) | internal static void SetLocationSnapShot(FrameworkElement element, Loc...
method GetLocationSnapShot (line 821) | internal static LocationSnapShot GetLocationSnapShot(FrameworkElement ...
method CanExecuteMaximiseFloatingItem (line 826) | private static void CanExecuteMaximiseFloatingItem(object sender, CanE...
method CanExecuteRestoreFloatingItem (line 838) | private static void CanExecuteRestoreFloatingItem(object sender, CanEx...
method CanExecuteCloseFloatingItem (line 850) | private static void CanExecuteCloseFloatingItem(object sender, CanExec...
method CloseFloatingItemExecuted (line 856) | private void CloseFloatingItemExecuted(object sender, ExecutedRoutedEv...
method MaximiseFloatingItemExecuted (line 882) | private static void MaximiseFloatingItemExecuted(object sender, Execut...
method RestoreFloatingItemExecuted (line 891) | private static void RestoreFloatingItemExecuted(object sender, Execute...
method IsHostingTab (line 902) | private bool IsHostingTab()
method MarkTopLeftItem (line 909) | private static void MarkTopLeftItem(Layout layout)
method CanExecuteUnfloat (line 929) | private void CanExecuteUnfloat(object sender, CanExecuteRoutedEventArg...
method UnfloatExecuted (line 936) | private void UnfloatExecuted(object sender, ExecutedRoutedEventArgs ex...
FILE: third_party/Dragablz/Dragablz/Dockablz/LayoutAccessor.cs
class LayoutAccessor (line 9) | public class LayoutAccessor
method LayoutAccessor (line 15) | public LayoutAccessor(Layout layout)
method Visit (line 58) | public LayoutAccessor Visit(
method TabablzControls (line 91) | public IEnumerable<TabablzControl> TabablzControls()
method TabablzControlVisitor (line 98) | private static void TabablzControlVisitor(IList<TabablzControl> result...
method BranchAccessorVisitor (line 103) | private static void BranchAccessorVisitor(IList<TabablzControl> result...
FILE: third_party/Dragablz/Dragablz/Dockablz/LocationReport.cs
class LocationReport (line 8) | public class LocationReport
method LocationReport (line 18) | internal LocationReport(TabablzControl tabablzControl, Layout rootLayout)
method LocationReport (line 22) | internal LocationReport(TabablzControl tabablzControl, Layout rootLayo...
FILE: third_party/Dragablz/Dragablz/Dockablz/LocationReportBuilder.cs
class LocationReportBuilder (line 5) | internal class LocationReportBuilder
method LocationReportBuilder (line 12) | public LocationReportBuilder(TabablzControl targetTabablzControl)
method MarkFound (line 24) | public void MarkFound()
method MarkFound (line 34) | public void MarkFound(Branch branch, bool isSecondLeaf)
method ToLocationReport (line 49) | public LocationReport ToLocationReport()
FILE: third_party/Dragablz/Dragablz/Dockablz/LocationReportException.cs
class LocationReportException (line 8) | public class LocationReportException : Exception
method LocationReportException (line 10) | public LocationReportException()
method LocationReportException (line 14) | public LocationReportException(string message) : base(message)
method LocationReportException (line 18) | public LocationReportException(string message, Exception innerExceptio...
FILE: third_party/Dragablz/Dragablz/Dockablz/LocationSnapShot.cs
class LocationSnapShot (line 12) | internal class LocationSnapShot
method Take (line 17) | public static LocationSnapShot Take(FrameworkElement frameworkElement)
method LocationSnapShot (line 24) | private LocationSnapShot(double width, double height)
method Apply (line 30) | public void Apply(FrameworkElement frameworkElement)
FILE: third_party/Dragablz/Dragablz/Dockablz/Tiler.cs
class Tiler (line 13) | internal class Tiler
method Tile (line 15) | public static void Tile(IEnumerable<DragablzItem> dragablzItems, Size ...
method TileHorizontally (line 44) | public static void TileHorizontally(IEnumerable<DragablzItem> dragablz...
method TileVertically (line 63) | public static void TileVertically(IEnumerable<DragablzItem> dragablzIt...
FILE: third_party/Dragablz/Dragablz/Dockablz/TilerCalculator.cs
class TilerCalculator (line 7) | internal static class TilerCalculator
method GetCellCountPerColumn (line 9) | public static int[] GetCellCountPerColumn(int totalCells)
FILE: third_party/Dragablz/Dragablz/DragablzColors.cs
class DragablzColors (line 15) | public static class DragablzColors
method GetWindowGlassBrush (line 23) | private static Brush GetWindowGlassBrush()
method GetBalancedWindowGlassBrush (line 33) | private static Brush GetBalancedWindowGlassBrush()
method GetWindowInactiveBrush (line 43) | private static Brush GetWindowInactiveBrush()
method ToColor (line 48) | private static Color ToColor(UInt32 value)
method BlendColor (line 57) | private static Color BlendColor(Color color1, Color color2, double per...
method BlendColorChannel (line 67) | private static byte BlendColorChannel(double channel1, double channel2...
FILE: third_party/Dragablz/Dragablz/DragablzDragCompletedEventArgs.cs
class DragablzDragCompletedEventArgs (line 9) | public class DragablzDragCompletedEventArgs : RoutedEventArgs
method DragablzDragCompletedEventArgs (line 15) | public DragablzDragCompletedEventArgs(DragablzItem dragablzItem, DragC...
method DragablzDragCompletedEventArgs (line 24) | public DragablzDragCompletedEventArgs(RoutedEvent routedEvent, Dragabl...
method DragablzDragCompletedEventArgs (line 34) | public DragablzDragCompletedEventArgs(RoutedEvent routedEvent, object ...
FILE: third_party/Dragablz/Dragablz/DragablzDragDeltaEventArgs.cs
class DragablzDragDeltaEventArgs (line 9) | public class DragablzDragDeltaEventArgs : DragablzItemEventArgs
method DragablzDragDeltaEventArgs (line 13) | public DragablzDragDeltaEventArgs(DragablzItem dragablzItem, DragDelta...
method DragablzDragDeltaEventArgs (line 21) | public DragablzDragDeltaEventArgs(RoutedEvent routedEvent, DragablzIte...
method DragablzDragDeltaEventArgs (line 29) | public DragablzDragDeltaEventArgs(RoutedEvent routedEvent, object sour...
FILE: third_party/Dragablz/Dragablz/DragablzDragStartedEventArgs.cs
class DragablzDragStartedEventArgs (line 9) | public class DragablzDragStartedEventArgs : DragablzItemEventArgs
method DragablzDragStartedEventArgs (line 13) | public DragablzDragStartedEventArgs(DragablzItem dragablzItem, DragSta...
method DragablzDragStartedEventArgs (line 21) | public DragablzDragStartedEventArgs(RoutedEvent routedEvent, DragablzI...
method DragablzDragStartedEventArgs (line 27) | public DragablzDragStartedEventArgs(RoutedEvent routedEvent, object so...
FILE: third_party/Dragablz/Dragablz/DragablzIcon.cs
class DragablzIcon (line 18) | public class DragablzIcon : Control
method DragablzIcon (line 20) | static DragablzIcon()
FILE: third_party/Dragablz/Dragablz/DragablzItem.cs
type SizeGrip (line 14) | public enum SizeGrip
class DragablzItem (line 27) | [TemplatePart(Name = ThumbPartName, Type = typeof(Thumb))]
method DragablzItem (line 40) | static DragablzItem()
method DragablzItem (line 45) | public DragablzItem()
method OnXChanged (line 72) | private static void OnXChanged(
method OnYChanged (line 107) | private static void OnYChanged(
method OnLogicalIndexChanged (line 147) | private static void OnLogicalIndexChanged(
method SizeGripPropertyChangedCallback (line 163) | private static void SizeGripPropertyChangedCallback(DependencyObject d...
method SizeThumbOnDragDelta (line 170) | private static void SizeThumbOnDragDelta(object sender, DragDeltaEvent...
method SetSizeGrip (line 228) | public static void SetSizeGrip(DependencyObject element, SizeGrip value)
method GetSizeGrip (line 233) | public static SizeGrip GetSizeGrip(DependencyObject element)
method SetContentRotateTransformAngle (line 249) | public static void SetContentRotateTransformAngle(DependencyObject ele...
method GetContentRotateTransformAngle (line 259) | public static double GetContentRotateTransformAngle(DependencyObject e...
method OnIsDraggingChanged (line 302) | private static void OnIsDraggingChanged(
method OnMouseDownWithin (line 319) | private static void OnMouseDownWithin(DependencyObject d)
method OnIsSiblingDraggingChanged (line 352) | private static void OnIsSiblingDraggingChanged(
method OnDragStarted (line 372) | protected void OnDragStarted(DragablzDragStartedEventArgs e)
method OnDragDelta (line 384) | protected void OnDragDelta(DragablzDragDeltaEventArgs e)
method OnPreviewDragDelta (line 396) | protected void OnPreviewDragDelta(DragablzDragDeltaEventArgs e)
method OnDragCompleted (line 408) | protected void OnDragCompleted(DragCompletedEventArgs e)
method IsCustomThumbPropertyChangedCallback (line 430) | private static void IsCustomThumbPropertyChangedCallback(DependencyObj...
method SetIsCustomThumb (line 448) | public static void SetIsCustomThumb(Thumb element, bool value)
method GetIsCustomThumb (line 453) | public static bool GetIsCustomThumb(Thumb element)
method OnApplyTemplate (line 459) | public override void OnApplyTemplate()
method OnPreviewMouseRightButtonDown (line 481) | protected override void OnPreviewMouseRightButtonDown(MouseButtonEvent...
method OnPreviewMouseRightButtonUp (line 500) | protected override void OnPreviewMouseRightButtonUp(MouseButtonEventAr...
method LostMouseAfterSeizeHandler (line 506) | private void LostMouseAfterSeizeHandler(object sender, MouseEventArgs ...
method InstigateDrag (line 512) | internal void InstigateDrag(Action<DragablzItem> continuation)
method ThumbOnDragCompleted (line 530) | private void ThumbOnDragCompleted(object sender, DragCompletedEventArg...
method ThumbOnDragDelta (line 536) | private void ThumbOnDragDelta(object sender, DragDeltaEventArgs dragDe...
method ThumbOnDragStarted (line 553) | private void ThumbOnDragStarted(object sender, DragStartedEventArgs dr...
method MouseDownHandler (line 559) | private void MouseDownHandler(object sender, RoutedEventArgs routedEve...
method CustomThumbOnLoaded (line 564) | private static void CustomThumbOnLoaded(object sender, RoutedEventArgs...
method FindCustomThumb (line 571) | private Thumb FindCustomThumb()
method ApplyCustomThumbSetting (line 576) | private static void ApplyCustomThumbSetting(Thumb thumb)
method SelectAndSubscribeToThumb (line 591) | private Tuple<Thumb, IDisposable> SelectAndSubscribeToThumb()
FILE: third_party/Dragablz/Dragablz/DragablzItemEventArgs.cs
class DragablzItemEventArgs (line 9) | public class DragablzItemEventArgs : RoutedEventArgs
method DragablzItemEventArgs (line 13) | public DragablzItemEventArgs(DragablzItem dragablzItem)
method DragablzItemEventArgs (line 20) | public DragablzItemEventArgs(RoutedEvent routedEvent, DragablzItem dra...
method DragablzItemEventArgs (line 26) | public DragablzItemEventArgs(RoutedEvent routedEvent, object source, D...
FILE: third_party/Dragablz/Dragablz/DragablzItemsControl.cs
class DragablzItemsControl (line 17) | public class DragablzItemsControl : ItemsControl
method DragablzItemsControl (line 21) | static DragablzItemsControl()
method DragablzItemsControl (line 26) | public DragablzItemsControl()
method ItemContainerGeneratorOnItemsChanged (line 47) | private void ItemContainerGeneratorOnItemsChanged(object sender, Items...
method ClearContainerForItemOverride (line 52) | protected override void ClearContainerForItemOverride(DependencyObject...
method AddToSource (line 123) | public void AddToSource(object item, AddLocationHint addLocationHint)
method AddToSource (line 134) | public void AddToSource(object item, object nearItem, AddLocationHint ...
method ItemContainerGeneratorOnStatusChanged (line 146) | private void ItemContainerGeneratorOnStatusChanged(object sender, Even...
method IsItemItsOwnContainerOverride (line 155) | protected override bool IsItemItsOwnContainerOverride(object item)
method GetContainerForItemOverride (line 163) | protected override DependencyObject GetContainerForItemOverride()
method PrepareContainerForItemOverride (line 174) | protected override void PrepareContainerForItemOverride(DependencyObje...
method MeasureOverride (line 182) | protected override Size MeasureOverride(Size constraint)
method InstigateDrag (line 208) | internal void InstigateDrag(object item, Action<DragablzItem> continua...
method MoveItem (line 218) | public void MoveItem(MoveItemRequest moveItemRequest)
method DragablzItems (line 263) | internal IEnumerable<DragablzItem> DragablzItems()
method ItemDragStarted (line 270) | private void ItemDragStarted(object sender, DragablzDragStartedEventAr...
method ItemDragCompleted (line 285) | private void ItemDragCompleted(object sender, DragablzDragCompletedEve...
method ItemDragDelta (line 311) | private void ItemDragDelta(object sender, DragablzDragDeltaEventArgs e...
method ItemXChanged (line 354) | private void ItemXChanged(object sender, RoutedPropertyChangedEventArg...
method ItemYChanged (line 359) | private void ItemYChanged(object sender, RoutedPropertyChangedEventArg...
method UpdateMonitor (line 364) | private void UpdateMonitor(RoutedEventArgs routedPropertyChangedEventA...
method ItemMouseDownWithinHandlerTarget (line 384) | private void ItemMouseDownWithinHandlerTarget(object sender, DragablzI...
method ItemSizeChangedEventHandler (line 394) | private void ItemSizeChangedEventHandler(object sender, SizeChangedEve...
FILE: third_party/Dragablz/Dragablz/DragablzWindow.cs
class DragablzWindow (line 22) | [TemplatePart(Name = WindowSurfaceGridPartName, Type = typeof(Grid))]
method DragablzWindow (line 52) | static DragablzWindow()
method DragablzWindow (line 57) | public DragablzWindow()
method ItemDragCompleted (line 81) | private void ItemDragCompleted(object sender, DragablzDragCompletedEve...
method ItemDragStarted (line 86) | private void ItemDragStarted(object sender, DragablzDragStartedEventAr...
method OnApplyTemplate (line 102) | public override void OnApplyTemplate()
method OnRenderSizeChanged (line 150) | protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
method WindowSurfaceGridOnMouseLeftButtonDown (line 175) | private void WindowSurfaceGridOnMouseLeftButtonDown(object sender, Mou...
method WindowResizeThumbOnMouseMove (line 184) | private static void WindowResizeThumbOnMouseMove(object sender, MouseE...
method WindowRestoreThumbOnMouseDoubleClick (line 191) | private void WindowRestoreThumbOnMouseDoubleClick(object sender, Mouse...
method WindowResizeThumbOnDragCompleted (line 196) | private void WindowResizeThumbOnDragCompleted(object sender, DragCompl...
method WindowResizeThumbOnDragDelta (line 201) | private void WindowResizeThumbOnDragDelta(object sender, DragDeltaEven...
method GetDPI (line 251) | private void GetDPI()
method WindowResizeThumbOnDragStarted (line 264) | private void WindowResizeThumbOnDragStarted(object sender, DragStarted...
method SelectSizingMode (line 278) | private static SizeGrip SelectSizingMode(Point mousePositionInThumb, S...
method SelectCursor (line 304) | private static Cursor SelectCursor(SizeGrip sizeGrip)
method WindowMoveThumbOnDragDelta (line 329) | private void WindowMoveThumbOnDragDelta(object sender, DragDeltaEventA...
method RestoreWindowExecuted (line 348) | private void RestoreWindowExecuted(object sender, ExecutedRoutedEventA...
method MinimizeWindowExecuted (line 353) | private void MinimizeWindowExecuted(object sender, ExecutedRoutedEvent...
method MaximizeWindowExecuted (line 358) | private void MaximizeWindowExecuted(object sender, ExecutedRoutedEvent...
method CloseWindowExecuted (line 363) | private void CloseWindowExecuted(object sender, ExecutedRoutedEventArg...
FILE: third_party/Dragablz/Dragablz/EmptyHeaderSizingHint.cs
type EmptyHeaderSizingHint (line 6) | public enum EmptyHeaderSizingHint
FILE: third_party/Dragablz/Dragablz/HeaderedDragablzItem.cs
class HeaderedDragablzItem (line 6) | public class HeaderedDragablzItem : DragablzItem
method HeaderedDragablzItem (line 8) | static HeaderedDragablzItem()
FILE: third_party/Dragablz/Dragablz/HeaderedItemViewModel.cs
class HeaderedItemViewModel (line 14) | public class HeaderedItemViewModel : INotifyPropertyChanged
method HeaderedItemViewModel (line 20) | public HeaderedItemViewModel()
method HeaderedItemViewModel (line 24) | public HeaderedItemViewModel(object header, object content, bool isSel...
method OnPropertyChanged (line 82) | protected virtual void OnPropertyChanged(string propertyName)
method OnPropertyChanged (line 85) | protected virtual void OnPropertyChanged([CallerMemberName] string pro...
FILE: third_party/Dragablz/Dragablz/HorizontalOrganiser.cs
class HorizontalOrganiser (line 8) | public class HorizontalOrganiser : StackOrganiser
method HorizontalOrganiser (line 10) | public HorizontalOrganiser() : base(Orientation.Horizontal)
method HorizontalOrganiser (line 13) | public HorizontalOrganiser(double itemOffset) : base(Orientation.Horiz...
FILE: third_party/Dragablz/Dragablz/HorizontalPositionMonitor.cs
class HorizontalPositionMonitor (line 5) | public class HorizontalPositionMonitor : StackPositionMonitor
method HorizontalPositionMonitor (line 7) | public HorizontalPositionMonitor() : base(Orientation.Horizontal)
FILE: third_party/Dragablz/Dragablz/IInterLayoutClient.cs
type IInterLayoutClient (line 8) | public interface IInterLayoutClient
method GetNewHost (line 16) | INewTabHost<UIElement> GetNewHost(object partition, TabablzControl sou...
FILE: third_party/Dragablz/Dragablz/IInterTabClient.cs
type IInterTabClient (line 9) | public interface IInterTabClient
method GetNewHost (line 18) | INewTabHost<Window> GetNewHost(IInterTabClient interTabClient, object ...
method TabEmptiedHandler (line 25) | TabEmptiedResponse TabEmptiedHandler(TabablzControl tabControl, Window...
FILE: third_party/Dragablz/Dragablz/IItemsOrganiser.cs
type IItemsOrganiser (line 9) | public interface IItemsOrganiser
method Organise (line 11) | void Organise(DragablzItemsControl requestor, Size measureBounds, IEnu...
method Organise (line 12) | void Organise(DragablzItemsControl requestor, Size measureBounds, IOrd...
method OrganiseOnMouseDownWithin (line 13) | void OrganiseOnMouseDownWithin(DragablzItemsControl requestor, Size me...
method OrganiseOnDragStarted (line 14) | void OrganiseOnDragStarted(DragablzItemsControl requestor, Size measur...
method OrganiseOnDrag (line 15) | void OrganiseOnDrag(DragablzItemsControl requestor, Size measureBounds...
method OrganiseOnDragCompleted (line 16) | void OrganiseOnDragCompleted(DragablzItemsControl requestor, Size meas...
method ConstrainLocation (line 17) | Point ConstrainLocation(DragablzItemsControl requestor, Size measureBo...
method Measure (line 18) | Size Measure(DragablzItemsControl requestor, Size availableSize, IEnum...
method Sort (line 19) | IEnumerable<DragablzItem> Sort(IEnumerable<DragablzItem> items);
FILE: third_party/Dragablz/Dragablz/IManualInterTabClient.cs
type IManualInterTabClient (line 3) | public interface IManualInterTabClient : IInterTabClient
method Add (line 5) | void Add(object item);
method Remove (line 6) | void Remove(object item);
FILE: third_party/Dragablz/Dragablz/INewTabHost.cs
type INewTabHost (line 5) | public interface INewTabHost<out TElement> where TElement : UIElement
FILE: third_party/Dragablz/Dragablz/InterTabController.cs
class InterTabController (line 6) | public class InterTabController : FrameworkElement
method InterTabController (line 8) | public InterTabController()
FILE: third_party/Dragablz/Dragablz/ItemActionCallbackArgs.cs
class ItemActionCallbackArgs (line 8) | public class ItemActionCallbackArgs<TOwner> where TOwner : FrameworkElement
method ItemActionCallbackArgs (line 14) | public ItemActionCallbackArgs(Window window, TOwner owner, DragablzIte...
method Cancel (line 42) | public void Cancel()
FILE: third_party/Dragablz/Dragablz/LocationChangedEventArgs.cs
class LocationChangedEventArgs (line 6) | public class LocationChangedEventArgs : EventArgs
method LocationChangedEventArgs (line 11) | public LocationChangedEventArgs(object item, Point location)
FILE: third_party/Dragablz/Dragablz/LocationHint.cs
type AddLocationHint (line 7) | public enum AddLocationHint
FILE: third_party/Dragablz/Dragablz/MoveItemRequest.cs
class MoveItemRequest (line 3) | public class MoveItemRequest
method MoveItemRequest (line 9) | public MoveItemRequest(object item, object context, AddLocationHint ad...
FILE: third_party/Dragablz/Dragablz/NewTabHost.cs
class NewTabHost (line 6) | public class NewTabHost<TElement> : INewTabHost<TElement> where TElement...
method NewTabHost (line 11) | public NewTabHost(TElement container, TabablzControl tabablzControl)
FILE: third_party/Dragablz/Dragablz/OrderChangedEventArgs.cs
class OrderChangedEventArgs (line 5) | public class OrderChangedEventArgs : EventArgs
method OrderChangedEventArgs (line 10) | public OrderChangedEventArgs(object[] previousOrder, object[] newOrder)
FILE: third_party/Dragablz/Dragablz/PositionMonitor.cs
class PositionMonitor (line 14) | public class PositionMonitor
method OnLocationChanged (line 21) | internal virtual void OnLocationChanged(LocationChangedEventArgs e)
method ItemsChanged (line 29) | internal virtual void ItemsChanged() { }
FILE: third_party/Dragablz/Dragablz/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: third_party/Dragablz/Dragablz/Properties/Settings.Designer.cs
class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
FILE: third_party/Dragablz/Dragablz/Referenceless/AnonymousDisposable.cs
class AnonymousDisposable (line 6) | internal sealed class AnonymousDisposable : ICancelable, IDisposable
method AnonymousDisposable (line 18) | public AnonymousDisposable(Action dispose)
method Dispose (line 23) | public void Dispose()
FILE: third_party/Dragablz/Dragablz/Referenceless/DefaultDisposable.cs
class DefaultDisposable (line 5) | internal sealed class DefaultDisposable : IDisposable
method DefaultDisposable (line 9) | static DefaultDisposable()
method DefaultDisposable (line 13) | private DefaultDisposable()
method Dispose (line 17) | public void Dispose()
FILE: third_party/Dragablz/Dragablz/Referenceless/Disposable.cs
class Disposable (line 5) | internal static class Disposable
method Create (line 15) | public static IDisposable Create(Action dispose)
FILE: third_party/Dragablz/Dragablz/Referenceless/ICancelable.cs
type ICancelable (line 5) | internal interface ICancelable : IDisposable
FILE: third_party/Dragablz/Dragablz/Referenceless/SerialDisposable.cs
class SerialDisposable (line 9) | internal sealed class SerialDisposable : ICancelable, IDisposable
method Dispose (line 67) | public void Dispose()
FILE: third_party/Dragablz/Dragablz/StackOrganiser.cs
class StackOrganiser (line 11) | public abstract class StackOrganiser : IItemsOrganiser
method StackOrganiser (line 23) | protected StackOrganiser(Orientation orientation, double itemOffset = 0)
class LocationInfo (line 49) | private class LocationInfo
method LocationInfo (line 56) | public LocationInfo(DragablzItem item, double start, double mid, dou...
method Organise (line 92) | public virtual void Organise(DragablzItemsControl requestor, Size meas...
method Organise (line 106) | public virtual void Organise(DragablzItemsControl requestor, Size meas...
method OrganiseInternal (line 116) | private void OrganiseInternal(DragablzItemsControl requestor, Size mea...
method OrganiseOnMouseDownWithin (line 135) | public virtual void OrganiseOnMouseDownWithin(DragablzItemsControl req...
method OrganiseOnDragStarted (line 143) | public virtual void OrganiseOnDragStarted(DragablzItemsControl request...
method OrganiseOnDrag (line 152) | public virtual void OrganiseOnDrag(DragablzItemsControl requestor, Siz...
method OrganiseOnDragCompleted (line 177) | public virtual void OrganiseOnDragCompleted(DragablzItemsControl reque...
method ConstrainLocation (line 199) | public virtual Point ConstrainLocation(DragablzItemsControl requestor,...
method Measure (line 219) | public virtual Size Measure(DragablzItemsControl requestor, Size avail...
method Sort (line 253) | public virtual IEnumerable<DragablzItem> Sort(IEnumerable<DragablzItem...
method SetLocation (line 260) | private void SetLocation(DragablzItem dragablzItem, double location)
method SendToLocation (line 265) | private void SendToLocation(DragablzItem dragablzItem, double location)
method GetLocationInfo (line 297) | private LocationInfo GetLocationInfo(DragablzItem item)
FILE: third_party/Dragablz/Dragablz/StackPositionMonitor.cs
class StackPositionMonitor (line 12) | public abstract class StackPositionMonitor : PositionMonitor
method StackPositionMonitor (line 16) | protected StackPositionMonitor(Orientation orientation)
method OnOrderChanged (line 33) | internal virtual void OnOrderChanged(OrderChangedEventArgs e)
method Sort (line 39) | internal IEnumerable<DragablzItem> Sort(IEnumerable<DragablzItem> items)
FILE: third_party/Dragablz/Dragablz/StoryboardCompletionListener.cs
class StoryboardCompletionListener (line 8) | internal class StoryboardCompletionListener
method StoryboardCompletionListener (line 13) | public StoryboardCompletionListener(Storyboard storyboard, Action<Stor...
method StoryboardOnCompleted (line 24) | private void StoryboardOnCompleted(object sender, EventArgs eventArgs)
class StoryboardCompletionListenerExtension (line 31) | internal static class StoryboardCompletionListenerExtension
method WhenComplete (line 35) | public static void WhenComplete(this Storyboard storyboard, Action<Sto...
FILE: third_party/Dragablz/Dragablz/TabEmptiedResponse.cs
type TabEmptiedResponse (line 3) | public enum TabEmptiedResponse
FILE: third_party/Dragablz/Dragablz/TabablzControl.cs
class TabablzControl (line 27) | [TemplatePart(Name = HeaderItemsControlPartName, Type = typeof(DragablzI...
method TabablzControl (line 62) | static TabablzControl()
method TabablzControl (line 71) | public TabablzControl()
method GetLoadedInstances (line 91) | public static IEnumerable<TabablzControl> GetLoadedInstances()
method CloseItem (line 105) | public static void CloseItem(object tabContentItem)
method AddItem (line 129) | public static void AddItem(object item, object nearItem, AddLocationHi...
method SelectItem (line 150) | public static void SelectItem(object item)
method AdjacentHeaderItemOffsetPropertyChangedCallback (line 195) | private static void AdjacentHeaderItemOffsetPropertyChangedCallback(De...
method InterTabControllerPropertyChangedCallback (line 375) | private static void InterTabControllerPropertyChangedCallback(Dependen...
method OnIsEmptyChanged (line 448) | private static void OnIsEmptyChanged(
method OnIsDraggingWindowChanged (line 554) | private static void OnIsDraggingWindowChanged(
method SetIsClosingAsPartOfDragOperation (line 574) | internal static void SetIsClosingAsPartOfDragOperation(Window element,...
method GetIsClosingAsPartOfDragOperation (line 585) | public static bool GetIsClosingAsPartOfDragOperation(Window element)
method SetIsWrappingTabItem (line 608) | internal static void SetIsWrappingTabItem(DependencyObject element, bo...
method GetIsWrappingTabItem (line 613) | public static bool GetIsWrappingTabItem(DependencyObject element)
method AddToSource (line 623) | public void AddToSource(object item)
method RemoveFromSource (line 647) | public void RemoveFromSource(object item)
method GetOrderedHeaders (line 670) | public IEnumerable<DragablzItem> GetOrderedHeaders()
method OnApplyTemplate (line 678) | public override void OnApplyTemplate()
method OnSelectionChanged (line 711) | protected override void OnSelectionChanged(SelectionChangedEventArgs e)
method OnItemsChanged (line 752) | protected override void OnItemsChanged(NotifyCollectionChangedEventArg...
method OnKeyDown (line 805) | protected override void OnKeyDown(KeyEventArgs e)
method OnCreateAutomationPeer (line 855) | protected override AutomationPeer OnCreateAutomationPeer()
method GetOwnerOfHeaderItems (line 860) | internal static TabablzControl GetOwnerOfHeaderItems(DragablzItemsCont...
method OnIsVisibleChanged (line 865) | private static void OnIsVisibleChanged(object sender, DependencyProper...
method OnLoaded (line 874) | private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
method WindowOnClosing (line 883) | private void WindowOnClosing(object sender, CancelEventArgs cancelEven...
method OnUnloaded (line 918) | private void OnUnloaded(object sender, RoutedEventArgs routedEventArgs)
method MarkWrappedTabItems (line 924) | private void MarkWrappedTabItems()
method MarkInitialSelection (line 941) | private void MarkInitialSelection()
method ItemDragStarted (line 957) | private void ItemDragStarted(object sender, DragablzDragStartedEventAr...
method ShouldDragWindow (line 987) | private bool ShouldDragWindow(DragablzItemsControl sourceOfDragItemsCo...
method PreviewItemDragDelta (line 994) | private void PreviewItemDragDelta(object sender, DragablzDragDeltaEven...
method MonitorReentry (line 1035) | private bool MonitorReentry(DragablzDragDeltaEventArgs e)
method RemoveItem (line 1094) | internal object RemoveItem(DragablzItem dragablzItem)
method ItemDragCompleted (line 1137) | private void ItemDragCompleted(object sender, DragablzDragCompletedEve...
method ItemDragDelta (line 1146) | private void ItemDragDelta(object sender, DragablzDragDeltaEventArgs e)
method IsMyItem (line 1164) | private bool IsMyItem(DragablzItem item)
method MonitorBreach (line 1169) | private void MonitorBreach(DragablzDragDeltaEventArgs e)
method IsTransposing (line 1246) | private bool IsTransposing(TabControl target)
method IsVertical (line 1251) | private static bool IsVertical(TabControl tabControl)
method RestorePreviousSelection (line 1257) | private void RestorePreviousSelection()
method ConfigureNewHostSizeAndGetDragStartWindowOffset (line 1266) | private Point ConfigureNewHostSizeAndGetDragStartWindowOffset(Window c...
method ReceiveDrag (line 1301) | internal void ReceiveDrag(InterTabTransfer interTabTransfer)
method UpdateSelectedItem (line 1382) | private void UpdateSelectedItem()
method GetContent (line 1401) | private static object GetContent(object item)
method CreateChildContentPresenter (line 1411) | private void CreateChildContentPresenter(object item)
method FindChildContentPresenter (line 1435) | private ContentPresenter FindChildContentPresenter(object data)
method ItemContainerGeneratorOnStatusChanged (line 1445) | private void ItemContainerGeneratorOnStatusChanged(object sender, Even...
method CloseItem (line 1451) | private static void CloseItem(DragablzItem item, TabablzControl owner)
method CloseItemCanExecuteClassHandler (line 1474) | private static void CloseItemCanExecuteClassHandler(object sender, Can...
method CloseItemClassHandler (line 1478) | private static void CloseItemClassHandler(object sender, ExecutedRoute...
method FindOwner (line 1487) | private static Tuple<DragablzItem, TabablzControl> FindOwner(object ev...
method AddItemHandler (line 1511) | private void AddItemHandler(object sender, ExecutedRoutedEventArgs e)
method PrepareChildContainerForItemOverride (line 1525) | private void PrepareChildContainerForItemOverride(DependencyObject dep...
FILE: third_party/Dragablz/Dragablz/TabablzHeaderSizeConverter.cs
class TabablzHeaderSizeConverter (line 14) | public class TabablzHeaderSizeConverter : IMultiValueConverter
method Convert (line 28) | public object Convert(object[] values, Type targetType, object paramet...
method ConvertBack (line 45) | public object[] ConvertBack(object value, Type[] targetTypes, object p...
FILE: third_party/Dragablz/Dragablz/TabablzItemStyleSelector.cs
class TabablzItemStyleSelector (line 9) | public class TabablzItemStyleSelector : StyleSelector
method TabablzItemStyleSelector (line 14) | public TabablzItemStyleSelector(Style defaultHeaderItemStyle, Style cu...
method SelectStyle (line 20) | public override Style SelectStyle(object item, DependencyObject contai...
FILE: third_party/Dragablz/Dragablz/Themes/BrushToRadialGradientBrushConverter.cs
class BrushToRadialGradientBrushConverter (line 9) | public class BrushToRadialGradientBrushConverter : IValueConverter
method Convert (line 11) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 26) | public object ConvertBack(object value, Type targetType, object parame...
FILE: third_party/Dragablz/Dragablz/Themes/MaterialDesignAssist.cs
class MaterialDesignAssist (line 14) | public static class MaterialDesignAssist
method SetIndicatorBrush (line 27) | public static void SetIndicatorBrush(DependencyObject element, Brush v...
method GetIndicatorBrush (line 37) | public static Brush GetIndicatorBrush(DependencyObject element)
FILE: third_party/Dragablz/Dragablz/Themes/Ripple.cs
class Ripple (line 13) | [TemplateVisualState(GroupName = "CommonStates", Name = TemplateStateNor...
method Ripple (line 24) | static Ripple()
method Ripple (line 34) | public Ripple()
method MouseButtonEventHandler (line 39) | private static void MouseButtonEventHandler(object sender, MouseButton...
method MouseMouveEventHandler (line 68) | private static void MouseMouveEventHandler(object sender, MouseEventAr...
method OnPreviewMouseLeftButtonDown (line 94) | protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventA...
method OnApplyTemplate (line 189) | public override void OnApplyTemplate()
method OnSizeChanged (line 196) | private void OnSizeChanged(object sender, SizeChangedEventArgs sizeCha...
FILE: third_party/Dragablz/Dragablz/Themes/RippleAssist.cs
class RippleAssist (line 5) | public static class RippleAssist
method SetClipToBounds (line 12) | public static void SetClipToBounds(DependencyObject element, bool value)
method GetClipToBounds (line 17) | public static bool GetClipToBounds(DependencyObject element)
method SetIsCentered (line 39) | public static void SetIsCentered(DependencyObject element, bool value)
method GetIsCentered (line 49) | public static bool GetIsCentered(DependencyObject element)
method SetRippleSizeMultiplier (line 61) | public static void SetRippleSizeMultiplier(DependencyObject element, d...
method GetRippleSizeMultiplier (line 66) | public static double GetRippleSizeMultiplier(DependencyObject element)
FILE: third_party/Dragablz/Dragablz/Themes/SystemCommandIcon.cs
type SystemCommandType (line 10) | public enum SystemCommandType
class SystemCommandIcon (line 18) | public class SystemCommandIcon : Control
method SystemCommandIcon (line 20) | static SystemCommandIcon()
FILE: third_party/Dragablz/Dragablz/Trapezoid.cs
class Trapezoid (line 13) | public class Trapezoid : ContentControl
method Trapezoid (line 17) | static Trapezoid()
method MeasureOverride (line 51) | protected override Size MeasureOverride(Size constraint)
method CreatePen (line 70) | private Pen CreatePen()
method CreateGeometry (line 79) | private static PathGeometry CreateGeometry(Size contentDesiredSize)
method OnRender (line 130) | protected override void OnRender(DrawingContext drawingContext)
FILE: third_party/Dragablz/Dragablz/VerticalOrganiser.cs
class VerticalOrganiser (line 5) | public class VerticalOrganiser : StackOrganiser
method VerticalOrganiser (line 7) | public VerticalOrganiser() : base(Orientation.Vertical)
FILE: third_party/Dragablz/Dragablz/VerticalPositionMonitor.cs
class VerticalPositionMonitor (line 5) | public class VerticalPositionMonitor : StackPositionMonitor
method VerticalPositionMonitor (line 7) | public VerticalPositionMonitor() : base(Orientation.Vertical)
FILE: third_party/demumble/third_party/libcxxabi/cxa_demangle.cpp
type __cxxabiv1 (line 28) | namespace __cxxabiv1
function print_stack (line 62) | void
function print_state (line 103) | void
type float_data (line 141) | struct float_data
type float_data<float> (line 144) | struct float_data<float>
type float_data<double> (line 154) | struct float_data<double>
type float_data<long double> (line 164) | struct float_data<long double>
function String (line 2851) | String
class save_value (line 4467) | class save_value
method save_value (line 4472) | save_value(T& restore)
method save_value (line 4482) | save_value(const save_value&) = delete;
method save_value (line 4483) | save_value& operator=(const save_value&) = delete;
function demangle (line 4670) | void
class arena (line 4719) | class arena
method align_up (line 4725) | std::size_t
method pointer_in_buffer (line 4729) | bool
method arena (line 4734) | arena() noexcept : ptr_(buf_) {}
method arena (line 4736) | arena(const arena&) = delete;
method arena (line 4737) | arena& operator=(const arena&) = delete;
method size (line 4742) | static constexpr std::size_t size() {return N;}
method used (line 4743) | std::size_t used() const {return static_cast<std::size_t>(ptr_ - buf...
method reset (line 4744) | void reset() {ptr_ = buf_;}
class short_alloc (line 4776) | class short_alloc
type rebind (line 4783) | struct rebind {typedef short_alloc<_Up, N> other;}
method short_alloc (line 4785) | short_alloc(arena<N>& a) noexcept : a_(a) {}
method short_alloc (line 4787) | short_alloc(const short_alloc<U, N>& a) noexcept
method short_alloc (line 4789) | short_alloc(const short_alloc&) = default;
method short_alloc (line 4790) | short_alloc& operator=(const short_alloc&) = delete;
method T (line 4792) | T* allocate(std::size_t n)
method deallocate (line 4796) | void deallocate(T* p, std::size_t n) noexcept
class malloc_alloc (line 4826) | class malloc_alloc
method malloc_alloc (line 4837) | malloc_alloc() = default;
method malloc_alloc (line 4838) | malloc_alloc(const malloc_alloc<U>&) noexcept {}
method T (line 4840) | T* allocate(std::size_t n)
method deallocate (line 4844) | void deallocate(T* p, std::size_t) noexcept
type rebind (line 4849) | struct rebind { using other = malloc_alloc<U>; }
method construct (line 4851) | void construct(U* p, Args&&... args)
method destroy (line 4855) | void destroy(T* p)
type string_pair (line 4882) | struct string_pair
method string_pair (line 4887) | string_pair() = default;
method string_pair (line 4888) | string_pair(StrT f) : first(std::move(f)) {}
method string_pair (line 4889) | string_pair(StrT f, StrT s)
method string_pair (line 4892) | string_pair(const char (&s)[N]) : first(s, N-1) {}
method size (line 4894) | size_t size() const {return first.size() + second.size();}
method StrT (line 4895) | StrT full() const {return first + second;}
method StrT (line 4896) | StrT move_full() {return std::move(first) + std::move(second);}
type Db (line 4899) | struct Db
method Db (line 4917) | Db(arena<N>& ar) :
function _LIBCXXABI_FUNC_VIS (line 4926) | _LIBCXXABI_FUNC_VIS char *
FILE: third_party/demumble/third_party/wine/undname.c
type BOOL (line 46) | typedef int BOOL;
type CHAR (line 49) | typedef char CHAR;
type array (line 101) | struct array
type parsed_symbol (line 111) | struct parsed_symbol
type datatype_t (line 128) | struct datatype_t
type parsed_symbol (line 134) | struct parsed_symbol
type parsed_symbol (line 143) | struct parsed_symbol
function und_free_all (line 185) | static void und_free_all(struct parsed_symbol* sym)
function str_array_init (line 202) | static void str_array_init(struct array* a)
function BOOL (line 212) | static BOOL str_array_push(struct parsed_symbol* sym, const char* ptr, i...
type array (line 261) | struct array
type parsed_symbol (line 280) | struct parsed_symbol
type parsed_symbol (line 336) | struct parsed_symbol
type datatype_t (line 336) | struct datatype_t
type array (line 337) | struct array
type parsed_symbol (line 339) | struct parsed_symbol
type parsed_symbol (line 390) | struct parsed_symbol
type array (line 390) | struct array
type datatype_t (line 394) | struct datatype_t
type array (line 395) | struct array
function BOOL (line 448) | static BOOL get_modifier(struct parsed_symbol *sym, const char **ret, co...
function BOOL (line 472) | static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbo...
type parsed_symbol (line 558) | struct parsed_symbol
type parsed_symbol (line 588) | struct parsed_symbol
type array (line 594) | struct array
function BOOL (line 624) | static BOOL get_class(struct parsed_symbol* sym)
type parsed_symbol (line 683) | struct parsed_symbol
type array (line 688) | struct array
type parsed_symbol (line 715) | struct parsed_symbol
function BOOL (line 731) | static BOOL get_calling_convention(char ch, const char** call_conv,
function BOOL (line 835) | static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype...
function BOOL (line 1030) | static BOOL handle_data(struct parsed_symbol* sym)
function BOOL (line 1121) | static BOOL handle_method(struct parsed_symbol* sym, BOOL cast_op)
function BOOL (line 1313) | static BOOL symbol_demangle(struct parsed_symbol* sym)
type parsed_symbol (line 1574) | struct parsed_symbol
type parsed_symbol (line 1584) | struct parsed_symbol
FILE: third_party/llvm-demangle/include/llvm/Demangle/Demangle.h
function namespace (line 15) | namespace llvm {
FILE: third_party/llvm-demangle/include/llvm/Demangle/ItaniumDemangle.h
function namespace (line 98) | namespace llvm {
type FunctionRefQual (line 285) | enum FunctionRefQual : unsigned char {
type Qualifiers (line 291) | enum Qualifiers {
function class (line 302) | class QualType : public Node {
function hasRHSComponentSlow (line 324) | bool hasRHSComponentSlow(OutputStream &S) const override {
function hasArraySlow (line 327) | bool hasArraySlow(OutputStream &S) const override {
function hasFunctionSlow (line 330) | bool hasFunctionSlow(OutputStream &S) const override {
function printLeft (line 334) | void printLeft(OutputStream &S) const override {
function printRight (line 339) | void printRight(OutputStream &S) const override { Child->printRight(S); }
function printLeft (line 351) | void printLeft(OutputStream &S) const override {
function printLeft (line 367) | void printLeft(OutputStream &s) const override {
function printLeft (line 384) | void printLeft(OutputStream &s) const override { s += Name; }
function class (line 387) | class ElaboratedTypeSpefType : public Node {
function printLeft (line 396) | void printLeft(OutputStream &S) const override {
function Node (line 403) | struct AbiTagAttr : Node {
function printLeft (line 414) | void printLeft(OutputStream &S) const override {
function class (line 422) | class EnableIfAttr : public Node {
function printLeft (line 430) | void printLeft(OutputStream &S) const override {
function class (line 437) | class ObjCProtoName : public Node {
function printLeft (line 454) | void printLeft(OutputStream &S) const override {
function hasRHSComponentSlow (line 472) | bool hasRHSComponentSlow(OutputStream &S) const override {
function printLeft (line 476) | void printLeft(OutputStream &s) const override {
function printRight (line 494) | void printRight(OutputStream &s) const override {
function ReferenceKind (line 504) | enum class ReferenceKind {
function hasRHSComponentSlow (line 578) | bool hasRHSComponentSlow(OutputStream &S) const override {
function printLeft (line 582) | void printLeft(OutputStream &s) const override {
function printRight (line 592) | void printRight(OutputStream &s) const override {
function class (line 599) | class NodeOrString {
function hasRHSComponentSlow (line 648) | bool hasRHSComponentSlow(OutputStream &) const override { return true; }
function hasArraySlow (line 649) | bool hasArraySlow(OutputStream &) const override { return true; }
function printLeft (line 651) | void printLeft(OutputStream &S) const override { Base->printLeft(S); }
function printRight (line 653) | void printRight(OutputStream &S) const override {
function hasRHSComponentSlow (line 686) | bool hasRHSComponentSlow(OutputStream &) const override { return true; }
function hasFunctionSlow (line 687) | bool hasFunctionSlow(OutputStream &) const override { return true; }
function printLeft (line 696) | void printLeft(OutputStream &S) const override {
function printRight (line 701) | void printRight(OutputStream &S) const override {
function class (line 726) | class NoexceptSpec : public Node {
function printLeft (line 733) | void printLeft(OutputStream &S) const override {
function class (line 740) | class DynamicExceptionSpec : public Node {
function printLeft (line 748) | void printLeft(OutputStream &S) const override {
function Node (line 780) | const Node *getReturnType() const { return Ret; }
function hasRHSComponentSlow (line 782) | bool hasRHSComponentSlow(OutputStream &) const override { return true; }
function hasFunctionSlow (line 783) | bool hasFunctionSlow(OutputStream &) const override { return true; }
function Node (line 785) | const Node *getName() const { return Name; }
function printLeft (line 787) | void printLeft(OutputStream &S) const override {
function printRight (line 796) | void printRight(OutputStream &S) const override {
function class (line 820) | class LiteralOperator : public Node {
function printLeft (line 829) | void printLeft(OutputStream &S) const override {
function printLeft (line 845) | void printLeft(OutputStream &S) const override {
function printLeft (line 862) | void printLeft(OutputStream &S) const override {
function Node (line 870) | struct NestedName : Node {
function printLeft (line 881) | void printLeft(OutputStream &S) const override {
function Node (line 888) | struct LocalName : Node {
function printLeft (line 897) | void printLeft(OutputStream &S) const override {
function printLeft (line 917) | void printLeft(OutputStream &S) const override {
function printLeft (line 935) | void printLeft(OutputStream &S) const override {
function printLeft (line 955) | void printLeft(OutputStream &S) const override {
function initializePackExpansion (line 975) | void initializePackExpansion(OutputStream &S) const {
function hasRHSComponentSlow (line 1001) | bool hasRHSComponentSlow(OutputStream &S) const override {
function hasArraySlow (line 1006) | bool hasArraySlow(OutputStream &S) const override {
function hasFunctionSlow (line 1011) | bool hasFunctionSlow(OutputStream &S) const override {
function Node (line 1016) | const Node *getSyntaxNode(OutputStream &S) const override {
function printLeft (line 1022) | void printLeft(OutputStream &S) const override {
function printRight (line 1028) | void printRight(OutputStream &S) const override {
function printLeft (line 1051) | void printLeft(OutputStream &S) const override {
function Node (line 1067) | const Node *getChild() const { return Child; }
function printLeft (line 1069) | void printLeft(OutputStream &S) const override {
function NodeArray (line 1110) | NodeArray getParams() { return Params; }
function printLeft (line 1112) | void printLeft(OutputStream &S) const override {
function Node (line 1139) | struct ForwardTemplateReference : Node {
function Node (line 1198) | struct NameWithTemplateArgs : Node {
function printLeft (line 1210) | void printLeft(OutputStream &S) const override {
function printLeft (line 1227) | void printLeft(OutputStream &S) const override {
function Node (line 1233) | struct StdQualifiedName : Node {
function printLeft (line 1242) | void printLeft(OutputStream &S) const override {
function SpecialSubKind (line 1248) | enum class SpecialSubKind {
function printLeft (line 1336) | void printLeft(OutputStream &S) const override {
function printLeft (line 1372) | void printLeft(OutputStream &S) const override {
function class (line 1379) | class DtorName : public Node {
function printLeft (line 1387) | void printLeft(OutputStream &S) const override {
function class (line 1393) | class UnnamedTypeName : public Node {
function printLeft (line 1401) | void printLeft(OutputStream &S) const override {
function class (line 1408) | class ClosureTypeName : public Node {
function printLeft (line 1418) | void printLeft(OutputStream &S) const override {
function class (line 1427) | class StructuredBindingName : public Node {
function printLeft (line 1435) | void printLeft(OutputStream &S) const override {
function class (line 1444) | class BinaryExpr : public Node {
function printLeft (line 1456) | void printLeft(OutputStream &S) const override {
function class (line 1475) | class ArraySubscriptExpr : public Node {
function printLeft (line 1485) | void printLeft(OutputStream &S) const override {
function class (line 1494) | class PostfixExpr : public Node {
function printLeft (line 1504) | void printLeft(OutputStream &S) const override {
function class (line 1512) | class ConditionalExpr : public Node {
function printLeft (line 1523) | void printLeft(OutputStream &S) const override {
function class (line 1534) | class MemberExpr : public Node {
function printLeft (line 1545) | void printLeft(OutputStream &S) const override {
function class (line 1552) | class EnclosingExpr : public Node {
function printLeft (line 1564) | void printLeft(OutputStream &S) const override {
function class (line 1571) | class CastExpr : public Node {
function printLeft (line 1583) | void printLeft(OutputStream &S) const override {
function class (line 1593) | class SizeofParamPackExpr : public Node {
function printLeft (line 1602) | void printLeft(OutputStream &S) const override {
function class (line 1610) | class CallExpr : public Node {
function printLeft (line 1620) | void printLeft(OutputStream &S) const override {
function class (line 1628) | class NewExpr : public Node {
function printLeft (line 1645) | void printLeft(OutputStream &S) const override {
function class (line 1667) | class DeleteExpr : public Node {
function printLeft (line 1678) | void printLeft(OutputStream &S) const override {
function class (line 1688) | class PrefixExpr : public Node {
function printLeft (line 1698) | void printLeft(OutputStream &S) const override {
function class (line 1706) | class FunctionParam : public Node {
function printLeft (line 1714) | void printLeft(OutputStream &S) const override {
function class (line 1720) | class ConversionExpr : public Node {
function printLeft (line 1730) | void printLeft(OutputStream &S) const override {
function class (line 1739) | class InitListExpr : public Node {
function printLeft (line 1748) | void printLeft(OutputStream &S) const override {
function class (line 1757) | class BracedExpr : public Node {
function printLeft (line 1767) | void printLeft(OutputStream &S) const override {
function class (line 1782) | class BracedRangeExpr : public Node {
function printLeft (line 1792) | void printLeft(OutputStream &S) const override {
function class (line 1804) | class FoldExpr : public Node {
function printLeft (line 1819) | void printLeft(OutputStream &S) const override {
function class (line 1859) | class ThrowExpr : public Node {
function printLeft (line 1867) | void printLeft(OutputStream &S) const override {
function class (line 1873) | class BoolExpr : public Node {
function printLeft (line 1881) | void printLeft(OutputStream &S) const override {
function class (line 1886) | class IntegerCastExpr : public Node {
function printLeft (line 1897) | void printLeft(OutputStream &S) const override {
function class (line 1905) | class IntegerLiteral : public Node {
function printLeft (line 1915) | void printLeft(OutputStream &S) const override {
function namespace (line 1935) | namespace float_literal_impl {
function printLeft (line 1959) | void printLeft(OutputStream &s) const override {
function clearInline (line 2030) | void clearInline() {
function reserve (line 2036) | void reserve(size_t NewCap) {
function push_back (line 2100) | void push_back(const T& Elem) {
function pop_back (line 2106) | void pop_back() {
function dropBack (line 2111) | void dropBack(size_t Index) {
function T (line 2116) | T* begin() { return First; }
function T (line 2117) | T* end() { return Last; }
function clear (line 2129) | void clear() { Last = First; }
function NodeArray (line 2196) | NodeArray popTrailingNodeArray(size_t FromPosition) {
function consumeIf (line 2204) | bool consumeIf(StringView S) {
function consumeIf (line 2212) | bool consumeIf(char C) {
function consume (line 2220) | char consume() { return First != Last ? *First++ : '\0'; }
type NameState (line 2270) | struct NameState {
function PushComponent (line 2858) | auto PushComponent = [&](Node *Comp) {
function float (line 4825) | struct FloatData<float>
function double (line 4833) | struct FloatData<double>
type FloatData (line 4841) | struct FloatData
FILE: third_party/llvm-demangle/include/llvm/Demangle/StringView.h
function class (line 20) | class StringView {
function StringView (line 51) | StringView substr(size_t From, size_t To) const {
function popFront (line 81) | char popFront() {
function consumeFront (line 86) | bool consumeFront(char C) {
function consumeFront (line 93) | bool consumeFront(StringView S) {
function startsWith (line 100) | bool startsWith(char C) const { return !empty() && *begin() == C; }
function startsWith (line 102) | bool startsWith(StringView Str) const {
function const (line 108) | const char &operator[](size_t Idx) const { return *(begin() + Idx); }
FILE: third_party/llvm-demangle/include/llvm/Demangle/Utility.h
function class (line 25) | class OutputStream {
function reset (line 67) | void reset(char *Buffer_, size_t BufferCapacity_) {
function setCurrentPosition (line 128) | void setCurrentPosition(size_t NewPos) { CurrentPosition = NewPos; }
function getBufferCapacity (line 138) | size_t getBufferCapacity() { return BufferCapacity; }
function shouldRestore (line 158) | void shouldRestore(bool ShouldRestore_) { ShouldRestore = ShouldRestore_; }
function restoreNow (line 160) | void restoreNow(bool Force) {
function initializeOutputStream (line 172) | inline bool initializeOutputStream(char *Buf, size_t *N, OutputStream &S,
FILE: third_party/llvm-demangle/lib/Demangle/ItaniumDemangle.cpp
type DumpVisitor (line 66) | struct DumpVisitor {
method wantsNewline (line 70) | static constexpr bool wantsNewline(const NodeT *) {
method wantsNewline (line 73) | static bool wantsNewline(NodeArray A) { return !A.empty(); }
method wantsNewline (line 74) | static constexpr bool wantsNewline(...) { return false; }
method anyWantNewline (line 76) | static bool anyWantNewline(Ts ...Vs) {
method printStr (line 83) | void printStr(const char *S) { fprintf(stderr, "%s", S); }
method print (line 84) | void print(StringView SV) {
method print (line 87) | void print(const Node *N) {
method print (line 93) | void print(NodeOrString NS) {
method print (line 101) | void print(NodeArray A) {
method print (line 117) | void print(T B) {
method print (line 120) | void print(size_t N) {
method print (line 123) | void print(ReferenceKind RK) {
method print (line 131) | void print(FunctionRefQual RQ) {
method print (line 141) | void print(Qualifiers Qs) {
method print (line 156) | void print(SpecialSubKind SSK) {
method newLine (line 173) | void newLine() {
method printWithPendingNewline (line 180) | void printWithPendingNewline(T V) {
method printWithComma (line 186) | void printWithComma(T V) {
type CtorArgPrinter (line 197) | struct CtorArgPrinter {
class BumpPointerAllocator (line 241) | class BumpPointerAllocator {
type BlockMeta (line 242) | struct BlockMeta {
method grow (line 253) | void grow() {
method BumpPointerAllocator (line 270) | BumpPointerAllocator()
method reset (line 285) | void reset() {
class DefaultAllocator (line 298) | class DefaultAllocator {
method reset (line 302) | void reset() { Alloc.reset(); }
method T (line 304) | T *makeNode(Args &&...args) {
function ItaniumPartialDemangler (line 375) | ItaniumPartialDemangler &ItaniumPartialDemangler::
FILE: third_party/llvm-demangle/lib/Demangle/MicrosoftDemangle.cpp
function startsWithDigit (line 32) | static bool startsWithDigit(StringView S) {
type QualifierMangleMode (line 36) | enum class QualifierMangleMode { Drop, Mangle, Result }
type NodeList (line 38) | struct NodeList {
type FunctionIdentifierCodeGroup (line 43) | enum class FunctionIdentifierCodeGroup { Basic, Under, DoubleUnder }
type NameBackrefBehavior (line 45) | enum NameBackrefBehavior : uint8_t {
function isMemberPointer (line 51) | static bool isMemberPointer(StringView MangledName) {
function SpecialIntrinsicKind (line 105) | static SpecialIntrinsicKind
function startsWithLocalScopePattern (line 142) | static bool startsWithLocalScopePattern(StringView S) {
function isTagType (line 183) | static bool isTagType(StringView S) {
function isCustomType (line 194) | static bool isCustomType(StringView S) { return S[0] == '?'; }
function isPointerType (line 196) | static bool isPointerType(StringView S) {
function isArrayType (line 211) | static bool isArrayType(StringView S) { return S[0] == 'Y'; }
function isFunctionType (line 213) | static bool isFunctionType(StringView S) {
function FunctionRefQualifier (line 217) | static FunctionRefQualifier
function demanglePointerCVQualifiers (line 226) | static std::pair<Qualifiers, PointerAffinity>
type BackrefContext (line 251) | struct BackrefContext {
class Demangler (line 266) | class Demangler {
method Demangler (line 268) | Demangler() = default;
function StringView (line 394) | StringView Demangler::copyString(StringView Borrowed) {
function SpecialTableSymbolNode (line 401) | SpecialTableSymbolNode *
function LocalStaticGuardVariableNode (line 437) | LocalStaticGuardVariableNode *
function NamedIdentifierNode (line 460) | static NamedIdentifierNode *synthesizeNamedIdentifier(ArenaAllocator &Ar...
function QualifiedNameNode (line 467) | static QualifiedNameNode *synthesizeQualifiedName(ArenaAllocator &Arena,
function QualifiedNameNode (line 477) | static QualifiedNameNode *synthesizeQualifiedName(ArenaAllocator &Arena,
function VariableSymbolNode (line 483) | static VariableSymbolNode *synthesizeVariable(ArenaAllocator &Arena,
function VariableSymbolNode (line 492) | VariableSymbolNode *Demangler::demangleUntypedVariable(
function VariableSymbolNode (line 505) | VariableSymbolNode *
function FunctionSymbolNode (line 523) | FunctionSymbolNode *Demangler::demangleInitFiniStub(StringView &MangledN...
function SymbolNode (line 571) | SymbolNode *Demangler::demangleSpecialIntrinsic(StringView &MangledName) {
function IdentifierNode (line 617) | IdentifierNode *
function StructorIdentifierNode (line 632) | StructorIdentifierNode *
function ConversionOperatorIdentifierNode (line 640) | ConversionOperatorIdentifierNode *
function LiteralOperatorIdentifierNode (line 647) | LiteralOperatorIdentifierNode *
function IntrinsicFunctionKind (line 655) | IntrinsicFunctionKind
function IdentifierNode (line 789) | IdentifierNode *
function SymbolNode (line 822) | SymbolNode *Demangler::demangleEncodedSymbol(StringView &MangledName,
function SymbolNode (line 849) | SymbolNode *Demangler::parse(StringView &MangledName) {
function VariableSymbolNode (line 896) | VariableSymbolNode *Demangler::demangleVariableEncoding(StringView &Mang...
function NamedIdentifierNode (line 1003) | NamedIdentifierNode *Demangler::demangleBackRefName(StringView &MangledN...
function IdentifierNode (line 1032) | IdentifierNode *
function NamedIdentifierNode (line 1056) | NamedIdentifierNode *Demangler::demangleSimpleName(StringView &MangledName,
function isRebasedHexDigit (line 1067) | static bool isRebasedHexDigit(char C) { return (C >= 'A' && C <= 'P'); }
function rebasedHexDigitToNumber (line 1069) | static uint8_t rebasedHexDigitToNumber(char C) {
function wchar_t (line 1128) | wchar_t Demangler::demangleWcharLiteral(StringView &MangledName) {
function writeHexDigit (line 1145) | static void writeHexDigit(char *Buffer, uint8_t Digit) {
function outputHex (line 1150) | static void outputHex(OutputStream &OS, unsigned C) {
function outputEscapedChar (line 1178) | static void outputEscapedChar(OutputStream &OS, unsigned C) {
function countTrailingNullBytes (line 1223) | unsigned countTrailingNullBytes(const uint8_t *StringBytes, int Length) {
function countEmbeddedNulls (line 1234) | unsigned countEmbeddedNulls(const uint8_t *StringBytes, unsigned Length) {
function guessCharByteSize (line 1243) | unsigned guessCharByteSize(const uint8_t *StringBytes, unsigned NumChars,
function decodeMultiByteChar (line 1277) | static unsigned decodeMultiByteChar(const uint8_t *StringBytes,
function FunctionSymbolNode (line 1290) | FunctionSymbolNode *Demangler::demangleVcallThunkNode(StringView &Mangle...
function EncodedStringLiteralNode (line 1308) | EncodedStringLiteralNode *
function StringView (line 1420) | StringView Demangler::demangleSimpleString(StringView &MangledName,
function NamedIdentifierNode (line 1438) | NamedIdentifierNode *
function NamedIdentifierNode (line 1456) | NamedIdentifierNode *
function QualifiedNameNode (line 1490) | QualifiedNameNode *
function QualifiedNameNode (line 1507) | QualifiedNameNode *
function IdentifierNode (line 1534) | IdentifierNode *Demangler::demangleUnqualifiedTypeName(StringView &Mangl...
function IdentifierNode (line 1549) | IdentifierNode *
function IdentifierNode (line 1561) | IdentifierNode *Demangler::demangleNameScopePiece(StringView &MangledNam...
function NodeArrayNode (line 1577) | static NodeArrayNode *nodeListToNodeArray(ArenaAllocator &Arena, NodeLis...
function QualifiedNameNode (line 1589) | QualifiedNameNode *
function FuncClass (line 1621) | FuncClass Demangler::demangleFunctionClass(StringView &MangledName) {
function CallingConv (line 1703) | CallingConv Demangler::demangleCallingConvention(StringView &MangledName) {
function StorageClass (line 1733) | StorageClass Demangler::demangleVariableStorageClass(StringView &Mangled...
function TypeNode (line 1781) | TypeNode *Demangler::demangleType(StringView &MangledName,
function FunctionSignatureNode (line 1829) | FunctionSignatureNode *Demangler::demangleFunctionType(StringView &Mangl...
function FunctionSymbolNode (line 1855) | FunctionSymbolNode *
function CustomTypeNode (line 1899) | CustomTypeNode *Demangler::demangleCustomType(StringView &MangledName) {
function PrimitiveTypeNode (line 1913) | PrimitiveTypeNode *Demangler::demanglePrimitiveType(StringView &MangledN...
function TagTypeNode (line 1970) | TagTypeNode *Demangler::demangleClassType(StringView &MangledName) {
function PointerTypeNode (line 2000) | PointerTypeNode *Demangler::demanglePointerType(StringView &MangledName) {
function PointerTypeNode (line 2018) | PointerTypeNode *Demangler::demangleMemberPointerType(StringView &Mangle...
function Qualifiers (line 2045) | Qualifiers Demangler::demanglePointerExtQualifiers(StringView &MangledNa...
function ArrayTypeNode (line 2057) | ArrayTypeNode *Demangler::demangleArrayType(StringView &MangledName) {
function NodeArrayNode (line 2102) | NodeArrayNode *
function NodeArrayNode (line 2167) | NodeArrayNode *
FILE: third_party/llvm-demangle/lib/Demangle/MicrosoftDemangleNodes.cpp
function outputSpaceIfNecessary (line 28) | static void outputSpaceIfNecessary(OutputStream &OS) {
function outputSingleQualifier (line 37) | static bool outputSingleQualifier(OutputStream &OS, Qualifiers Q) {
function outputQualifierIfPresent (line 54) | static bool outputQualifierIfPresent(OutputStream &OS, Qualifiers Q,
function outputQualifiers (line 66) | static void outputQualifiers(OutputStream &OS, Qualifiers Q, bool SpaceB...
function outputCallingConvention (line 80) | static void outputCallingConvention(OutputStream &OS, CallingConv CC) {
FILE: third_party/llvm-demangle/lib/Demangle/MicrosoftDemangleNodes.h
function class (line 20) | class ArenaAllocator {
type Qualifiers (line 112) | enum Qualifiers : uint8_t {
type class (line 123) | enum class
type class (line 132) | enum class
type class (line 133) | enum class
type class (line 136) | enum class
type class (line 149) | enum class
type OutputFlags (line 151) | enum OutputFlags {
type class (line 157) | enum class
type class (line 180) | enum class
type class (line 187) | enum class
function SpecialIntrinsicKind (line 256) | enum class SpecialIntrinsicKind {
FILE: third_party/phlib/apiimport.c
function PVOID (line 26) | PVOID PhpImportProcedure(
FILE: third_party/phlib/appresolver.c
function PVOID (line 34) | static PVOID PhpQueryAppResolverInterface(
function PVOID (line 54) | static PVOID PhpQueryStartMenuCacheInterface(
function BOOLEAN (line 74) | BOOLEAN PhAppResolverGetAppIdForProcess(
function PPH_LIST (line 117) | PPH_LIST PhGetPackageAssetsFromResourceFile(
FILE: third_party/phlib/avltree.c
function VOID (line 31) | VOID PhInitializeAvlTree(
function FORCEINLINE (line 52) | FORCEINLINE PPH_AVL_LINKS PhpFindElementAvlTree(
function FORCEINLINE (line 105) | FORCEINLINE VOID PhpRotateLeftAvlLinks(
function FORCEINLINE (line 151) | FORCEINLINE VOID PhpRotateLeftTwiceAvlLinks(
function FORCEINLINE (line 220) | FORCEINLINE VOID PhpRotateRightAvlLinks(
function FORCEINLINE (line 266) | FORCEINLINE VOID PhpRotateRightTwiceAvlLinks(
function ULONG (line 335) | ULONG PhpRebalanceAvlLinks(
function PPH_AVL_LINKS (line 487) | PPH_AVL_LINKS PhAddElementAvlTree(
function VOID (line 572) | VOID PhRemoveElementAvlTree(
function PPH_AVL_LINKS (line 701) | PPH_AVL_LINKS PhFindElementAvlTree(
function PPH_AVL_LINKS (line 725) | PPH_AVL_LINKS PhLowerBoundElementAvlTree(
function PPH_AVL_LINKS (line 763) | PPH_AVL_LINKS PhUpperBoundElementAvlTree(
function PPH_AVL_LINKS (line 801) | PPH_AVL_LINKS PhLowerDualBoundElementAvlTree(
function PPH_AVL_LINKS (line 839) | PPH_AVL_LINKS PhUpperDualBoundElementAvlTree(
function PPH_AVL_LINKS (line 876) | PPH_AVL_LINKS PhMinimumElementAvlTree(
function PPH_AVL_LINKS (line 900) | PPH_AVL_LINKS PhMaximumElementAvlTree(
function PPH_AVL_LINKS (line 924) | PPH_AVL_LINKS PhSuccessorElementAvlTree(
function PPH_AVL_LINKS (line 965) | PPH_AVL_LINKS PhPredecessorElementAvlTree(
function VOID (line 1010) | VOID PhEnumAvlTree(
FILE: third_party/phlib/basesup.c
type PHP_BASE_THREAD_CONTEXT (line 75) | typedef struct _PHP_BASE_THREAD_CONTEXT
function BOOLEAN (line 135) | BOOLEAN PhBaseInitialization(
function NTSTATUS (line 172) | NTSTATUS PhpBaseThreadStart(
function HANDLE (line 228) | HANDLE PhCreateThread(
function NTSTATUS (line 265) | NTSTATUS PhCreateThread2(
function VOID (line 310) | VOID PhQuerySystemTime(
function VOID (line 324) | VOID PhQueryTimeZoneBias(
function VOID (line 345) | VOID PhSystemTimeToLocalTime(
function VOID (line 366) | VOID PhLocalTimeToSystemTime(
function _Ret_notnull_ (line 389) | _Ret_notnull_
function PVOID (line 420) | PVOID PhAllocateExSafe(
function VOID (line 433) | VOID PhFree(
function _May_raise_ (line 451) | _May_raise_
function PVOID (line 490) | PVOID PhAllocatePage(
function VOID (line 524) | VOID PhFreePage(
function SIZE_T (line 545) | SIZE_T PhCountStringZ(
function PSTR (line 599) | PSTR PhDuplicateBytesZ(
function PSTR (line 622) | PSTR PhDuplicateBytesZSafe(
function PWSTR (line 648) | PWSTR PhDuplicateStringZ(
function BOOLEAN (line 681) | BOOLEAN PhCopyBytesZ(
function BOOLEAN (line 743) | BOOLEAN PhCopyStringZ(
function BOOLEAN (line 805) | BOOLEAN PhCopyStringZFromBytes(
function BOOLEAN (line 867) | BOOLEAN PhCopyStringZFromMultiByte(
function FORCEINLINE (line 944) | FORCEINLINE LONG PhpCompareRightNatural(
function FORCEINLINE (line 984) | FORCEINLINE LONG PhpCompareLeftNatural(
function FORCEINLINE (line 1016) | FORCEINLINE LONG PhpCompareStringZNatural(
function LONG (line 1111) | LONG PhCompareStringZNatural(
function LONG (line 1130) | LONG PhCompareStringRef(
function BOOLEAN (line 1201) | BOOLEAN PhEqualStringRef(
function ULONG_PTR (line 1348) | ULONG_PTR PhFindCharInStringRef(
function ULONG_PTR (line 1434) | ULONG_PTR PhFindLastCharInStringRef(
function ULONG_PTR (line 1526) | ULONG_PTR PhFindStringInStringRef(
function BOOLEAN (line 1598) | BOOLEAN PhSplitStringRefAtChar(
function BOOLEAN (line 1645) | BOOLEAN PhSplitStringRefAtLastChar(
function BOOLEAN (line 1693) | BOOLEAN PhSplitStringRefAtString(
function BOOLEAN (line 1757) | BOOLEAN PhSplitStringRefEx(
function VOID (line 1974) | VOID PhTrimStringRef(
function PPH_STRING (line 2121) | PPH_STRING PhCreateString(
function PPH_STRING (line 2134) | PPH_STRING PhCreateStringEx(
function PPH_STRING (line 2162) | PPH_STRING PhReferenceEmptyString(
function PPH_STRING (line 2199) | PPH_STRING PhConcatStrings(
function PPH_STRING (line 2217) | PPH_STRING PhConcatStrings_V(
function PPH_STRING (line 2279) | PPH_STRING PhConcatStrings2(
function PPH_STRING (line 2311) | PPH_STRING PhConcatStringRef2(
function PPH_STRING (line 2335) | PPH_STRING PhConcatStringRef3(
function PPH_STRING (line 2367) | PPH_STRING PhFormatString(
function PPH_STRING (line 2385) | PPH_STRING PhFormatString_V(
function PPH_BYTES (line 2409) | PPH_BYTES PhCreateBytes(
function PPH_BYTES (line 2422) | PPH_BYTES PhCreateBytesEx(
function BOOLEAN (line 2446) | BOOLEAN PhWriteUnicodeDecoder(
function BOOLEAN (line 2476) | BOOLEAN PhpReadUnicodeDecoder(
function VOID (line 2510) | VOID PhpUnreadUnicodeDecoder(
function BOOLEAN (line 2544) | BOOLEAN PhpDecodeUtf8Error(
function BOOLEAN (line 2563) | BOOLEAN PhDecodeUnicodeDecoder(
function BOOLEAN (line 2760) | BOOLEAN PhEncodeUnicode(
function VOID (line 2863) | VOID PhZeroExtendToUtf16Buffer(
function PPH_STRING (line 2898) | PPH_STRING PhZeroExtendToUtf16Ex(
function PPH_BYTES (line 2911) | PPH_BYTES PhConvertUtf16ToAsciiEx(
function PPH_STRING (line 2964) | PPH_STRING PhConvertMultiByteToUtf16(
function PPH_STRING (line 2980) | PPH_STRING PhConvertMultiByteToUtf16Ex(
function PPH_BYTES (line 3021) | PPH_BYTES PhConvertUtf16ToMultiByte(
function PPH_BYTES (line 3037) | PPH_BYTES PhConvertUtf16ToMultiByteEx(
function BOOLEAN (line 3073) | BOOLEAN PhConvertUtf8ToUtf16Size(
function BOOLEAN (line 3113) | BOOLEAN PhConvertUtf8ToUtf16Buffer(
function PPH_STRING (line 3179) | PPH_STRING PhConvertUtf8ToUtf16(
function PPH_STRING (line 3189) | PPH_STRING PhConvertUtf8ToUtf16Ex(
function BOOLEAN (line 3223) | BOOLEAN PhConvertUtf16ToUtf8Size(
function BOOLEAN (line 3263) | BOOLEAN PhConvertUtf16ToUtf8Buffer(
function PPH_BYTES (line 3333) | PPH_BYTES PhConvertUtf16ToUtf8(
function PPH_BYTES (line 3343) | PPH_BYTES PhConvertUtf16ToUtf8Ex(
function VOID (line 3383) | VOID PhInitializeStringBuilder(
function VOID (line 3416) | VOID PhDeleteStringBuilder(
function PPH_STRING (line 3432) | PPH_STRING PhFinalStringBuilderString(
function VOID (line 3439) | VOID PhpResizeStringBuilder(
function FORCEINLINE (line 3472) | FORCEINLINE VOID PhpWriteNullTerminatorStringBuilder(
function VOID (line 3486) | VOID PhAppendStringBuilder(
function VOID (line 3504) | VOID PhAppendStringBuilder2(
function VOID (line 3523) | VOID PhAppendStringBuilderEx(
function VOID (line 3559) | VOID PhAppendCharStringBuilder(
function VOID (line 3581) | VOID PhAppendCharStringBuilder2(
function VOID (line 3612) | VOID PhAppendFormatStringBuilder(
function VOID (line 3625) | VOID PhAppendFormatStringBuilder_V(
function VOID (line 3662) | VOID PhInsertStringBuilder(
function VOID (line 3683) | VOID PhInsertStringBuilder2(
function VOID (line 3705) | VOID PhInsertStringBuilderEx(
function VOID (line 3752) | VOID PhRemoveStringBuilder(
function VOID (line 3776) | VOID PhInitializeBytesBuilder(
function VOID (line 3792) | VOID PhDeleteBytesBuilder(
function PPH_BYTES (line 3808) | PPH_BYTES PhFinalBytesBuilderBytes(
function VOID (line 3815) | VOID PhpResizeBytesBuilder(
function FORCEINLINE (line 3846) | FORCEINLINE VOID PhpWriteNullTerminatorBytesBuilder(
function VOID (line 3859) | VOID PhAppendBytesBuilder(
function VOID (line 3879) | VOID PhAppendBytesBuilder2(
function PVOID (line 3905) | PVOID PhAppendBytesBuilderEx(
function VOID (line 3949) | VOID PhInitializeArray(
function VOID (line 3970) | VOID PhDeleteArray(
function PVOID (line 3985) | PVOID PhFinalArrayItems(
function VOID (line 3999) | VOID PhResizeArray(
function VOID (line 4017) | VOID PhAddItemArray(
function VOID (line 4040) | VOID PhAddItemsArray(
function VOID (line 4070) | VOID PhClearArray(
function VOID (line 4083) | VOID PhRemoveItemArray(
function VOID (line 4098) | VOID PhRemoveItemsArray(
function PPH_LIST (line 4118) | PPH_LIST PhCreateList(
function VOID (line 4137) | VOID PhpListDeleteProcedure(
function VOID (line 4154) | VOID PhResizeList(
function VOID (line 4172) | VOID PhAddItemList(
function VOID (line 4194) | VOID PhAddItemsList(
function VOID (line 4224) | VOID PhClearList(
function ULONG (line 4241) | ULONG PhFindItemList(
function VOID (line 4264) | VOID PhInsertItemList(
function VOID (line 4281) | VOID PhInsertItemsList(
function VOID (line 4325) | VOID PhRemoveItemList(
function VOID (line 4340) | VOID PhRemoveItemsList(
function PPH_POINTER_LIST (line 4360) | PPH_POINTER_LIST PhCreatePointerList(
function VOID (line 4381) | VOID NTAPI PhpPointerListDeleteProcedure(
function FORCEINLINE (line 4394) | FORCEINLINE ULONG PhpDecodePointerListIndex(
function FORCEINLINE (line 4406) | FORCEINLINE PVOID PhpEncodePointerListIndex(
function FORCEINLINE (line 4413) | FORCEINLINE HANDLE PhpPointerListIndexToHandle(
function FORCEINLINE (line 4421) | FORCEINLINE ULONG PhpPointerListHandleToIndex(
function HANDLE (line 4436) | HANDLE PhAddItemPointerList(
function BOOLEAN (line 4473) | BOOLEAN PhEnumPointerListEx(
function HANDLE (line 4509) | HANDLE PhFindItemPointerList(
function VOID (line 4536) | VOID PhRemoveItemPointerList(
function FORCEINLINE (line 4553) | FORCEINLINE ULONG PhpValidateHash(
function FORCEINLINE (line 4568) | FORCEINLINE ULONG PhpIndexFromHash(
function FORCEINLINE (line 4580) | FORCEINLINE ULONG PhpGetNumberOfBuckets(
function PPH_HASHTABLE (line 4600) | PPH_HASHTABLE PhCreateHashtable(
function VOID (line 4636) | VOID PhpHashtableDeleteProcedure(
function VOID (line 4647) | VOID PhpResizeHashtable(
function FORCEINLINE (line 4688) | FORCEINLINE PVOID PhpAddEntryHashtable(
function PVOID (line 4769) | PVOID PhAddEntryHashtable(
function PVOID (line 4799) | PVOID PhAddEntryHashtableEx(
function VOID (line 4813) | VOID PhClearHashtable(
function BOOLEAN (line 4840) | BOOLEAN PhEnumHashtable(
function PVOID (line 4874) | PVOID PhFindEntryHashtable(
function BOOLEAN (line 4911) | BOOLEAN PhRemoveEntryHashtable(
function ULONG (line 4963) | ULONG PhHashBytes(
function ULONG (line 4990) | ULONG PhHashStringRef(
function BOOLEAN (line 5021) | BOOLEAN NTAPI PhpSimpleHashtableEqualFunction(
function ULONG (line 5032) | ULONG NTAPI PhpSimpleHashtableHashFunction(
function PPH_HASHTABLE (line 5041) | PPH_HASHTABLE PhCreateSimpleHashtable(
function PVOID (line 5053) | PVOID PhAddItemSimpleHashtable(
function PVOID (line 5070) | PVOID *PhFindItemSimpleHashtable(
function BOOLEAN (line 5087) | BOOLEAN PhRemoveItemSimpleHashtable(
function VOID (line 5106) | VOID PhInitializeFreeList(
function VOID (line 5123) | VOID PhDeleteFreeList(
function PVOID (line 5148) | PVOID PhAllocateFromFreeList(
function VOID (line 5176) | VOID PhFreeToFreeList(
function VOID (line 5203) | VOID PhInitializeCallback(
function VOID (line 5217) | VOID PhDeleteCallback(
function VOID (line 5234) | VOID PhRegisterCallback(
function VOID (line 5261) | VOID PhRegisterCallbackEx(
function VOID (line 5290) | VOID PhUnregisterCallback(
function VOID (line 5314) | VOID PhInvokeCallback(
function ULONG (line 5365) | ULONG PhGetPrimeNumber(
function ULONG (line 5402) | ULONG PhRoundUpToPowerOfTwo(
function ULONG (line 5420) | ULONG PhExponentiate(
function ULONG64 (line 5442) | ULONG64 PhExponentiate64(
function BOOLEAN (line 5471) | BOOLEAN PhHexStringToBuffer(
function PPH_STRING (line 5503) | PPH_STRING PhBufferToHexString(
function PPH_STRING (line 5520) | PPH_STRING PhBufferToHexStringEx(
function BOOLEAN (line 5553) | BOOLEAN PhpStringToInteger64(
function BOOLEAN (line 5604) | BOOLEAN PhStringToInteger64(
function BOOLEAN (line 5687) | BOOLEAN PhpStringToDouble(
function BOOLEAN (line 5750) | BOOLEAN PhStringToDouble(
function PPH_STRING (line 5790) | PPH_STRING PhIntegerToString64(
function VOID (line 5815) | VOID PhPrintTimeSpan(
function VOID (line 5865) | VOID PhFillMemoryUlong(
function VOID (line 5948) | VOID PhDivideSinglesBySingle(
FILE: third_party/phlib/circbuf_i.h
function VOID (line 5) | VOID T___(PhInitializeCircularBuffer, T)(
function VOID (line 22) | VOID T___(PhDeleteCircularBuffer, T)(
function VOID (line 29) | VOID T___(PhResizeCircularBuffer, T)(
function VOID (line 85) | VOID T___(PhClearCircularBuffer, T)(
function VOID (line 93) | VOID T___(PhCopyCircularBuffer, T)(
FILE: third_party/phlib/colorbox.c
type PHP_COLORBOX_CONTEXT (line 30) | typedef struct _PHP_COLORBOX_CONTEXT
function BOOLEAN (line 44) | BOOLEAN PhColorBoxInitialization(
function VOID (line 68) | VOID PhpCreateColorBoxContext(
function VOID (line 79) | VOID PhpFreeColorBoxContext(
function VOID (line 86) | VOID PhpChooseColor(
function LRESULT (line 106) | LRESULT CALLBACK PhpColorBoxWndProc(
FILE: third_party/phlib/cpysave.c
function VOID (line 31) | VOID PhpEscapeStringForCsv(
function VOID (line 84) | VOID PhaCreateTextTable(
function PPH_LIST (line 115) | PPH_LIST PhaFormatTextTable(
function VOID (line 238) | VOID PhMapDisplayIndexTreeNew(
function PPH_STRING (line 290) | PPH_STRING PhGetTreeNewText(
function PPH_LIST (line 339) | PPH_LIST PhGetGenericTreeNewLines(
function VOID (line 406) | VOID PhaMapDisplayIndexListView(
function PPH_STRING (line 448) | PPH_STRING PhaGetListViewItemText(
function PPH_STRING (line 488) | PPH_STRING PhGetListViewText(
function PPH_LIST (line 530) | PPH_LIST PhGetListViewLines(
FILE: third_party/phlib/dspick.c
function IDsObjectPicker (line 44) | IDsObjectPicker *PhpCreateDsObjectPicker(
function VOID (line 69) | VOID PhFreeDsObjectPickerDialog(
function PVOID (line 76) | PVOID PhCreateDsObjectPickerDialog(
function PDS_SELECTION_LIST (line 128) | PDS_SELECTION_LIST PhpGetDsSelectionList(
function BOOLEAN (line 154) | BOOLEAN PhShowDsObjectPickerDialog(
function VOID (line 236) | VOID PhFreeDsObjectPickerObjects(
FILE: third_party/phlib/emenu.c
function PPH_EMENU_ITEM (line 43) | PPH_EMENU_ITEM PhAllocateEMenuItem(
function PPH_EMENU_ITEM (line 72) | PPH_EMENU_ITEM PhCreateEMenuItem(
function VOID (line 102) | VOID PhpDestroyEMenuItem(
function VOID (line 136) | VOID PhDestroyEMenuItem(
function PPH_EMENU_ITEM (line 161) | PPH_EMENU_ITEM PhFindEMenuItem(
function PPH_EMENU_ITEM (line 187) | PPH_EMENU_ITEM PhFindEMenuItemEx(
function ULONG (line 279) | ULONG PhIndexOfEMenuItem(
function VOID (line 298) | VOID PhInsertEMenuItem(
function BOOLEAN (line 330) | BOOLEAN PhRemoveEMenuItem(
function VOID (line 368) | VOID PhRemoveAllEMenuItems(
function PPH_EMENU (line 388) | PPH_EMENU PhCreateEMenu(
function VOID (line 406) | VOID PhDestroyEMenu(
function VOID (line 425) | VOID PhInitializeEMenuData(
function VOID (line 435) | VOID PhDeleteEMenuData(
function HMENU (line 455) | HMENU PhEMenuToHMenu(
function VOID (line 495) | VOID PhEMenuToHMenu2(
function VOID (line 599) | VOID PhHMenuToEMenuItem(
function VOID (line 665) | VOID PhLoadResourceEMenuItem(
function PPH_EMENU_ITEM (line 703) | PPH_EMENU_ITEM PhShowEMenu(
function BOOLEAN (line 782) | BOOLEAN PhSetFlagsEMenuItem(
function VOID (line 813) | VOID PhSetFlagsAllEMenuItems(
function VOID (line 830) | VOID PhModifyEMenuItem(
FILE: third_party/phlib/error.c
function ULONG (line 31) | ULONG PhNtStatusToDosError(
function NTSTATUS (line 47) | NTSTATUS PhDosErrorToNtStatus(
function BOOLEAN (line 72) | BOOLEAN PhNtStatusFileNotFound(
FILE: third_party/phlib/extlv.c
type PH_EXTLV_CONTEXT (line 38) | typedef struct _PH_EXTLV_CONTEXT
function VOID (line 108) | VOID PhSetExtendedListView(
function LRESULT (line 137) | LRESULT CALLBACK PhpExtendedListViewWndProc(
function VOID (line 484) | VOID PhSetHeaderSortIcon(
function INT (line 527) | static INT PhpExtendedListViewCompareFunc(
function INT (line 600) | static INT PhpExtendedListViewCompareFastFunc(
function FORCEINLINE (line 657) | static FORCEINLINE INT PhpCompareListViewItems(
function INT (line 696) | static INT PhpDefaultCompareListViewItems(
FILE: third_party/phlib/fastlock.c
function VOID (line 53) | VOID PhInitializeFastLock(
function VOID (line 62) | VOID PhDeleteFastLock(
function FORCEINLINE (line 79) | FORCEINLINE VOID PhpEnsureEventCreated(
function FORCEINLINE (line 100) | FORCEINLINE ULONG PhpGetSpinCount(
function _May_raise_ (line 110) | _May_raise_
function _May_raise_ (line 170) | _May_raise_
function VOID (line 239) | VOID FASTCALL PhfReleaseFastLockExclusive(
function VOID (line 286) | VOID FASTCALL PhfReleaseFastLockShared(
function FASTCALL (line 334) | FASTCALL PhfTryAcquireFastLockExclusive(
function FASTCALL (line 353) | FASTCALL PhfTryAcquireFastLockShared(
FILE: third_party/phlib/filepool.c
function NTSTATUS (line 87) | NTSTATUS PhCreateFilePool(
function NTSTATUS (line 258) | NTSTATUS PhCreateFilePool2(
function VOID (line 314) | VOID PhDestroyFilePool(
function NTSTATUS (line 358) | NTSTATUS PhpValidateFilePoolParameters(
function VOID (line 386) | VOID PhpSetDefaultFilePoolParameters(
function PVOID (line 407) | PVOID PhAllocateFilePool(
function VOID (line 505) | VOID PhpFreeFilePool(
function VOID (line 536) | VOID PhFreeFilePool(
function BOOLEAN (line 560) | BOOLEAN PhFreeFilePoolByRva(
function VOID (line 591) | VOID PhReferenceFilePool(
function VOID (line 605) | VOID PhDereferenceFilePool(
function PVOID (line 620) | PVOID PhReferenceFilePoolByRva(
function BOOLEAN (line 651) | BOOLEAN PhDereferenceFilePoolByRva(
function ULONG (line 679) | ULONG PhEncodeRvaFilePool(
function VOID (line 703) | VOID PhGetUserContextFilePool(
function VOID (line 717) | VOID PhSetUserContextFilePool(
function NTSTATUS (line 731) | NTSTATUS PhFppExtendRange(
function NTSTATUS (line 751) | NTSTATUS PhFppMapRange(
function NTSTATUS (line 792) | NTSTATUS PhFppUnmapRange(
function VOID (line 808) | VOID PhFppInitializeSegment(
function PPH_FP_BLOCK_HEADER (line 835) | PPH_FP_BLOCK_HEADER PhFppAllocateSegment(
function PPH_FP_SEGMENT_HEADER (line 868) | PPH_FP_SEGMENT_HEADER PhFppGetHeaderSegment(
function VOID (line 884) | VOID PhFppAddViewByIndex(
function VOID (line 906) | VOID PhFppRemoveViewByIndex(
function PPH_FILE_POOL_VIEW (line 943) | PPH_FILE_POOL_VIEW PhFppFindViewByIndex(
function LONG (line 974) | LONG NTAPI PhpFilePoolViewByBaseCompareFunction(
function VOID (line 985) | VOID PhFppAddViewByBase(
function VOID (line 993) | VOID PhFppRemoveViewByBase(
function PPH_FILE_POOL_VIEW (line 1009) | PPH_FILE_POOL_VIEW PhFppFindViewByBase(
function PPH_FILE_POOL_VIEW (line 1034) | PPH_FILE_POOL_VIEW PhFppCreateView(
function VOID (line 1061) | VOID PhFppDestroyView(
function VOID (line 1073) | VOID PhFppActivateView(
function VOID (line 1082) | VOID PhFppDeactivateView(
function VOID (line 1105) | VOID PhFppReferenceView(
function VOID (line 1119) | VOID PhFppDereferenceView(
function PPH_FP_BLOCK_HEADER (line 1133) | PPH_FP_BLOCK_HEADER PhFppReferenceSegment(
function VOID (line 1165) | VOID PhFppDereferenceSegment(
function VOID (line 1180) | VOID PhFppReferenceSegmentByBase(
function VOID (line 1195) | VOID PhFppDereferenceSegmentByBase(
function PPH_FP_BLOCK_HEADER (line 1221) | PPH_FP_BLOCK_HEADER PhFppAllocateBlocks(
function VOID (line 1266) | VOID PhFppFreeBlocks(
function ULONG (line 1292) | ULONG PhFppComputeFreeListIndex(
function BOOLEAN (line 1343) | BOOLEAN PhFppInsertFreeList(
function BOOLEAN (line 1390) | BOOLEAN PhFppRemoveFreeList(
function PPH_FP_BLOCK_HEADER (line 1460) | PPH_FP_BLOCK_HEADER PhFppGetHeaderBlock(
function ULONG (line 1476) | ULONG PhFppEncodeRva(
function ULONG (line 1495) | ULONG PhFppDecodeRva(
FILE: third_party/phlib/filestream.c
function BOOLEAN (line 29) | BOOLEAN PhFileStreamInitialization(
function NTSTATUS (line 43) | NTSTATUS PhCreateFileStream(
function NTSTATUS (line 106) | NTSTATUS PhCreateFileStream2(
function VOID (line 140) | VOID NTAPI PhpFileStreamDeleteProcedure(
function VOID (line 159) | VOID PhVerifyFileStream(
function NTSTATUS (line 188) | NTSTATUS PhpAllocateBufferFileStream(
function NTSTATUS (line 200) | NTSTATUS PhpReadFileStream(
function NTSTATUS (line 249) | NTSTATUS PhReadFileStream(
function NTSTATUS (line 372) | NTSTATUS PhpWriteFileStream(
function NTSTATUS (line 418) | NTSTATUS PhWriteFileStream(
function NTSTATUS (line 514) | NTSTATUS PhpFlushReadFileStream(
function NTSTATUS (line 542) | NTSTATUS PhpFlushWriteFileStream(
function NTSTATUS (line 567) | NTSTATUS PhFlushFileStream(
function VOID (line 600) | VOID PhGetPositionFileStream(
function NTSTATUS (line 611) | NTSTATUS PhpSeekFileStream(
function NTSTATUS (line 664) | NTSTATUS PhSeekFileStream(
function NTSTATUS (line 704) | NTSTATUS PhLockFileStream(
function NTSTATUS (line 739) | NTSTATUS PhUnlockFileStream(
function NTSTATUS (line 756) | NTSTATUS PhWriteStringAsUtf8FileStream(
function NTSTATUS (line 764) | NTSTATUS PhWriteStringAsUtf8FileStream2(
function NTSTATUS (line 776) | NTSTATUS PhWriteStringAsUtf8FileStreamEx(
function NTSTATUS (line 849) | NTSTATUS PhWriteStringFormatAsUtf8FileStream_V(
function NTSTATUS (line 865) | NTSTATUS PhWriteStringFormatAsUtf8FileStream(
FILE: third_party/phlib/format.c
function errno_t (line 86) | static errno_t __cdecl _cfltcvt_l(double *arg, char *buffer, size_t size...
function VOID (line 102) | VOID PhpCropZeros(
function PPH_STRING (line 130) | PPH_STRING PhpResizeFormatBuffer(
function PPH_STRING (line 163) | PPH_STRING PhFormat(
function BOOLEAN (line 231) | BOOLEAN PhFormatToBuffer(
FILE: third_party/phlib/global.c
function NTSTATUS (line 60) | NTSTATUS PhInitializePhLib(
function NTSTATUS (line 72) | NTSTATUS PhInitializePhLibEx(
function BOOLEAN (line 110) | BOOLEAN PhIsExecutingInWow64(
function BOOLEAN (line 128) | static BOOLEAN PhInitializeSystem(
function VOID (line 147) | static VOID PhInitializeSystemInformation(
function VOID (line 159) | static VOID PhInitializeWindowsVersion(
FILE: third_party/phlib/graph.c
type PHP_GRAPH_CONTEXT (line 34) | typedef struct _PHP_GRAPH_CONTEXT
function BOOLEAN (line 71) | BOOLEAN PhGraphControlInitialization(
function FORCEINLINE (line 95) | FORCEINLINE VOID PhpGetGraphPoint(
function VOID (line 153) | VOID PhDrawGraphDirect(
function VOID (line 582) | VOID PhSetGraphText(
function HFONT (line 637) | static HFONT PhpTrayIconFont(
function VOID (line 666) | VOID PhDrawTrayIconText(
function VOID (line 733) | VOID PhpCreateGraphContext(
function VOID (line 771) | VOID PhpFreeGraphContext(
function PWSTR (line 778) | static PWSTR PhpMakeGraphTooltipContextAtom(
function VOID (line 785) | static VOID PhpDeleteBufferedContext(
function VOID (line 803) | static VOID PhpCreateBufferedContext(
function VOID (line 830) | static VOID PhpDeleteFadeOutContext(
function VOID (line 846) | static VOID PhpCreateFadeOutContext(
function VOID (line 905) | VOID PhpUpdateDrawInfo(
function VOID (line 923) | VOID PhpDrawGraphControl(
function LRESULT (line 971) | LRESULT CALLBACK PhpGraphWndProc(
function VOID (line 1342) | VOID PhInitializeGraphBuffers(
function VOID (line 1357) | VOID PhDeleteGraphBuffers(
function VOID (line 1373) | VOID PhGetDrawInfoGraphBuffers(
function VOID (line 1408) | VOID PhInitializeGraphState(
function VOID (line 1418) | VOID PhDeleteGraphState(
function VOID (line 1427) | VOID PhGraphStateGetDrawInfo(
FILE: third_party/phlib/guisup.c
function VOID (line 42) | VOID PhGuiSupportInitialization(
function VOID (line 65) | VOID PhSetControlTheme(
function INT (line 73) | INT PhAddListViewColumn(
function INT (line 95) | INT PhAddListViewItem(
function INT (line 113) | INT PhFindListViewItemByFlags(
function INT (line 122) | INT PhFindListViewItemByParam(
function LOGICAL (line 136) | LOGICAL PhGetListViewItemImageIndex(
function LOGICAL (line 159) | LOGICAL PhGetListViewItemParam(
function VOID (line 182) | VOID PhRemoveListViewItem(
function VOID (line 190) | VOID PhSetListViewItemImageIndex(
function VOID (line 206) | VOID PhSetListViewSubItem(
function INT (line 223) | INT PhAddTabControlTab(
function PPH_STRING (line 237) | PPH_STRING PhGetWindowText(
function ULONG (line 247) | ULONG PhGetWindowTextEx(
function VOID (line 313) | VOID PhAddComboBoxStrings(
function PPH_STRING (line 325) | PPH_STRING PhGetComboBoxString(
function INT (line 361) | INT PhSelectComboBoxString(
function PPH_STRING (line 386) | PPH_STRING PhGetListBoxString(
function VOID (line 422) | VOID PhSetStateAllListViewItems(
function PVOID (line 442) | PVOID PhGetSelectedListViewItemParam(
function VOID (line 470) | VOID PhGetSelectedListViewItemParams(
function VOID (line 497) | VOID PhSetImageListBitmap(
function BOOLEAN (line 515) | static BOOLEAN SharedIconCacheHashtableEqualFunction(
function ULONG (line 546) | static ULONG SharedIconCacheHashtableHashFunction(
function HICON (line 561) | HICON PhLoadIcon(
function VOID (line 663) | VOID PhGetStockApplicationIcon(
function HICON (line 718) | HICON PhGetFileShellIcon(
function VOID (line 786) | VOID PhpSetClipboardData(
function VOID (line 809) | VOID PhSetClipboardString(
function HWND (line 828) | HWND PhCreateDialogFromTemplate(
function BOOLEAN (line 865) | BOOLEAN PhModalPropertySheet(
function VOID (line 939) | VOID PhInitializeLayoutManager(
function VOID (line 957) | VOID PhDeleteLayoutManager(
function PPH_LAYOUT_ITEM (line 971) | PPH_LAYOUT_ITEM PhAddLayoutItem(
function PPH_LAYOUT_ITEM (line 1005) | PPH_LAYOUT_ITEM PhAddLayoutItemEx(
function VOID (line 1054) | VOID PhpLayoutItemLayout(
function VOID (line 1172) | VOID PhLayoutManagerLayout(
FILE: third_party/phlib/handle.c
function PPH_HANDLE_TABLE (line 31) | PPH_HANDLE_TABLE PhCreateHandleTable(
function VOID (line 95) | VOID PhDestroyHandleTable(
function VOID (line 165) | VOID PhpBlockOnLockedHandleTableEntry(
function BOOLEAN (line 191) | BOOLEAN PhLockHandleTableEntry(
function VOID (line 221) | VOID PhUnlockHandleTableEntry(
function HANDLE (line 233) | HANDLE PhCreateHandle(
function BOOLEAN (line 261) | BOOLEAN PhDestroyHandle(
function PPH_HANDLE_TABLE_ENTRY (line 296) | PPH_HANDLE_TABLE_ENTRY PhLookupHandleTableEntry(
function VOID (line 314) | VOID PhEnumHandleTable(
function VOID (line 346) | VOID PhSweepHandleTable(
function NTSTATUS (line 377) | NTSTATUS PhQueryInformationHandleTable(
function NTSTATUS (line 436) | NTSTATUS PhSetInformationHandleTable(
function PPH_HANDLE_TABLE_ENTRY (line 474) | PPH_HANDLE_TABLE_ENTRY PhpAllocateHandleTableEntry(
function VOID (line 585) | VOID PhpFreeHandleTableEntry(
function BOOLEAN (line 629) | BOOLEAN PhpAllocateMoreHandleTableEntries(
function PPH_HANDLE_TABLE_ENTRY (line 842) | PPH_HANDLE_TABLE_ENTRY PhpLookupHandleTableEntry(
function ULONG (line 895) | ULONG PhpMoveFreeHandleTableEntries(
function PPH_HANDLE_TABLE_ENTRY (line 992) | PPH_HANDLE_TABLE_ENTRY PhpCreateHandleTableLevel0(
function VOID (line 1034) | VOID PhpFreeHandleTableLevel0(
function PPH_HANDLE_TABLE_ENTRY (line 1041) | PPH_HANDLE_TABLE_ENTRY *PhpCreateHandleTableLevel1(
function VOID (line 1065) | VOID PhpFreeHandleTableLevel1(
function PPH_HANDLE_TABLE_ENTRY (line 1072) | PPH_HANDLE_TABLE_ENTRY **PhpCreateHandleTableLevel2(
function VOID (line 1092) | VOID PhpFreeHandleTableLevel2(
FILE: third_party/phlib/hexedit.c
function BOOLEAN (line 34) | BOOLEAN PhHexEditInitialization(
function VOID (line 58) | VOID PhpCreateHexEditContext(
function VOID (line 98) | VOID PhpFreeHexEditContext(
function LRESULT (line 108) | LRESULT CALLBACK PhpHexEditWndProc(
function FORCEINLINE (line 897) | FORCEINLINE VOID PhpPrintHex(
function FORCEINLINE (line 923) | FORCEINLINE VOID PhpPrintAscii(
function FORCEINLINE (line 947) | FORCEINLINE COLORREF GetLighterHighlightColor(
function VOID (line 979) | VOID PhpHexEditUpdateMetrics(
function VOID (line 1030) | VOID PhpHexEditOnPaint(
function VOID (line 1299) | VOID PhpHexEditUpdateScrollbars(
function VOID (line 1326) | VOID PhpHexEditCreateAddressCaret(
function VOID (line 1335) | VOID PhpHexEditCreateEditCaret(
function VOID (line 1344) | VOID PhpHexEditRepositionCaret(
function VOID (line 1393) | VOID PhpHexEditCalculatePosition(
function VOID (line 1469) | VOID PhpHexEditMove(
function VOID (line 1521) | VOID PhpHexEditSetSel(
function VOID (line 1549) | VOID PhpHexEditScrollTo(
function VOID (line 1574) | VOID PhpHexEditClearEdit(
function VOID (line 1588) | VOID PhpHexEditCopyEdit(
function VOID (line 1679) | VOID PhpHexEditCutEdit(
function VOID (line 1692) | VOID PhpHexEditPasteEdit(
function VOID (line 1762) | VOID PhpHexEditSelectAll(
function VOID (line 1773) | VOID PhpHexEditUndoEdit(
function VOID (line 1781) | VOID PhpHexEditNormalizeSel(
function VOID (line 1796) | VOID PhpHexEditSelDelete(
function VOID (line 1827) | VOID PhpHexEditSelInsert(
function VOID (line 1851) | VOID PhpHexEditSetBuffer(
function VOID (line 1871) | VOID PhpHexEditSetData(
FILE: third_party/phlib/hndlinfo.c
type PHP_CALL_WITH_TIMEOUT_THREAD_CONTEXT (line 31) | typedef struct _PHP_CALL_WITH_TIMEOUT_THREAD_CONTEXT
type PHP_QUERY_OBJECT_WORK (line 43) | typedef enum _PHP_QUERY_OBJECT_WORK
type PHP_QUERY_OBJECT_COMMON_CONTEXT (line 50) | typedef struct _PHP_QUERY_OBJECT_COMMON_CONTEXT
function PPH_GET_CLIENT_ID_NAME (line 107) | PPH_GET_CLIENT_ID_NAME PhSetHandleClientIdFunction(
function NTSTATUS (line 117) | NTSTATUS PhpGetObjectBasicInformation(
function NTSTATUS (line 167) | NTSTATUS PhpGetObjectTypeName(
function NTSTATUS (line 276) | NTSTATUS PhpGetObjectName(
function PPH_STRING (line 351) | PPH_STRING PhFormatNativeKeyName(
function NTSTATUS (line 443) | NTSTATUS PhGetSectionFileName(
function _Callback_ (line 477) | _Callback_ PPH_STRING PhStdGetClientIdName(
function NTSTATUS (line 573) | NTSTATUS PhpGetBestObjectName(
function NTSTATUS (line 1141) | NTSTATUS PhGetHandleInformation(
function NTSTATUS (line 1210) | NTSTATUS PhGetHandleInformationEx(
function NTSTATUS (line 1374) | NTSTATUS PhEnumObjectTypes(
function ULONG (line 1415) | ULONG PhGetObjectTypeNumber(
function PPHP_CALL_WITH_TIMEOUT_THREAD_CONTEXT (line 1453) | PPHP_CALL_WITH_TIMEOUT_THREAD_CONTEXT PhpAcquireCallWithTimeoutThread(
function VOID (line 1507) | VOID PhpReleaseCallWithTimeoutThread(
function NTSTATUS (line 1515) | NTSTATUS PhpCallWithTimeout(
function NTSTATUS (line 1591) | NTSTATUS PhpCallWithTimeoutThreadStart(
function NTSTATUS (line 1613) | NTSTATUS PhCallWithTimeout(
function NTSTATUS (line 1636) | NTSTATUS PhpCommonQueryObjectRoutine(
function NTSTATUS (line 1677) | NTSTATUS PhpCommonQueryObjectWithTimeout(
function NTSTATUS (line 1695) | NTSTATUS PhCallNtQueryObjectWithTimeout(
function NTSTATUS (line 1717) | NTSTATUS PhCallNtQuerySecurityObjectWithTimeout(
function NTSTATUS (line 1739) | NTSTATUS PhCallNtSetSecurityObjectWithTimeout(
FILE: third_party/phlib/icotobmp.c
function HBITMAP (line 7) | static HBITMAP PhpCreateBitmap32(
function BOOLEAN (line 28) | static BOOLEAN PhpHasAlpha(
function VOID (line 55) | static VOID PhpConvertToPArgb32(
function VOID (line 109) | static VOID PhpConvertToPArgb32IfNeeded(
function HBITMAP (line 142) | HBITMAP PhIconToBitmap(
FILE: third_party/phlib/include/apiimport.h
type __unaligned (line 44) | typedef HRESULT (WINAPI *_SHCreateShellItem)(
type IShellFolder (line 46) | struct IShellFolder
type _ITEMIDLIST (line 47) | struct _ITEMIDLIST
type IShellItem (line 48) | struct IShellItem
type __unaligned (line 51) | typedef HRESULT (WINAPI *_SHOpenFolderAndSelectItems)(
FILE: third_party/phlib/include/appresolverp.h
type START_MENU_APP_ITEMS_FLAGS (line 46) | typedef enum _START_MENU_APP_ITEMS_FLAGS
type IResourceCandidate (line 412) | struct IResourceCandidate
FILE: third_party/phlib/include/circbuf_h.h
type T___ (line 9) | struct T___
function FORCEINLINE (line 59) | FORCEINLINE T T___(PhGetItemCircularBuffer, T)(
function FORCEINLINE (line 75) | FORCEINLINE VOID T___(PhSetItemCircularBuffer, T)(
function FORCEINLINE (line 91) | FORCEINLINE VOID T___(PhAddItemCircularBuffer, T)(
function FORCEINLINE (line 109) | FORCEINLINE T T___(PhAddItemCircularBuffer2, T)(
FILE: third_party/phlib/include/dltmgr.h
type PH_SINGLE_DELTA (line 4) | typedef struct _PH_SINGLE_DELTA
type PH_UINT32_DELTA (line 10) | typedef struct _PH_UINT32_DELTA
type PH_UINT64_DELTA (line 16) | typedef struct _PH_UINT64_DELTA
type PH_UINTPTR_DELTA (line 22) | typedef struct _PH_UINTPTR_DELTA
FILE: third_party/phlib/include/dspick.h
type PH_DSPICK_OBJECT (line 10) | typedef struct _PH_DSPICK_OBJECT
type PH_DSPICK_OBJECTS (line 16) | typedef struct _PH_DSPICK_OBJECTS
FILE: third_party/phlib/include/emenu.h
type _PH_EMENU_ITEM (line 23) | struct _PH_EMENU_ITEM
type PH_EMENU_ITEM (line 29) | typedef struct _PH_EMENU_ITEM
type PH_EMENU (line 45) | typedef struct _PH_EMENU_ITEM PH_EMENU, *PPH_EMENU;
type PH_EMENU_DATA (line 120) | typedef struct _PH_EMENU_DATA
function PhCreateEMenuSeparator (line 180) | PhCreateEMenuSeparator(
function FORCEINLINE (line 195) | FORCEINLINE BOOLEAN PhEnableEMenuItem(
FILE: third_party/phlib/include/exlf.h
type ELF_IMAGE_HEADER (line 232) | typedef struct _ELF_IMAGE_HEADER
type ELF_IMAGE_HEADER32 (line 257) | typedef struct _ELF_IMAGE_HEADER32
type ELF_IMAGE_HEADER64 (line 272) | typedef struct _ELF_IMAGE_HEADER64
type ELF32_IMAGE_SEGMENT_HEADER (line 287) | typedef struct _ELF32_IMAGE_SEGMENT_HEADER
type ELF64_IMAGE_SEGMENT_HEADER (line 299) | typedef struct _ELF64_IMAGE_SEGMENT_HEADER
type ELF32_IMAGE_SECTION_HEADER (line 318) | typedef struct _ELF32_IMAGE_SECTION_HEADER
type ELF64_IMAGE_SECTION_HEADER (line 332) | typedef struct _ELF64_IMAGE_SECTION_HEADER
type ELF32_IMAGE_DYNAMIC_ENTRY (line 355) | typedef struct _ELF32_IMAGE_DYNAMIC_ENTRY // Elf32_Dyn
type ELF64_IMAGE_DYNAMIC_ENTRY (line 361) | typedef struct _ELF64_IMAGE_DYNAMIC_ENTRY // Elf64_Dyn
type ELF_IMAGE_SYMBOL_ENTRY (line 369) | typedef struct _ELF_IMAGE_SYMBOL_ENTRY // Elf_Sym
type ELF_VERSION_TABLE (line 381) | typedef struct _ELF_VERSION_TABLE // Elf_Versym
type Elf_Verdef (line 386) | typedef struct
type Elf_Verdaux (line 397) | typedef struct
type ELF_VERSION_NEED (line 408) | typedef struct _ELF_VERSION_NEED // Elf_Verneed
type ELF_VERSION_AUX (line 417) | typedef struct _ELF_VERSION_AUX // Elf_Vernaux
FILE: third_party/phlib/include/fastlock.h
type PH_FAST_LOCK (line 10) | typedef struct _PH_FAST_LOCK
FILE: third_party/phlib/include/filepool.h
type PH_FP_BLOCK_HEADER (line 36) | typedef struct _PH_FP_BLOCK_HEADER
type PH_FP_SEGMENT_HEADER (line 45) | typedef struct _PH_FP_SEGMENT_HEADER
type PH_FP_FILE_HEADER (line 56) | typedef struct _PH_FP_FILE_HEADER
type PH_FILE_POOL_PARAMETERS (line 67) | typedef struct _PH_FILE_POOL_PARAMETERS
type PH_FILE_POOL (line 83) | typedef struct _PH_FILE_POOL
FILE: third_party/phlib/include/filepoolp.h
type PH_FILE_POOL_VIEW (line 4) | typedef struct _PH_FILE_POOL_VIEW
FILE: third_party/phlib/include/filestream.h
type PH_SEEK_ORIGIN (line 35) | typedef enum _PH_SEEK_ORIGIN
type PH_FILE_STREAM (line 42) | typedef struct _PH_FILE_STREAM
FILE: third_party/phlib/include/graph.h
type PH_GRAPH_DRAW_INFO (line 27) | typedef struct _PH_GRAPH_DRAW_INFO
type PH_GRAPH_OPTIONS (line 106) | typedef struct _PH_GRAPH_OPTIONS
type PH_GRAPH_GETDRAWINFO (line 156) | typedef struct _PH_GRAPH_GETDRAWINFO
type PH_GRAPH_GETTOOLTIPTEXT (line 162) | typedef struct _PH_GRAPH_GETTOOLTIPTEXT
type PH_GRAPH_MOUSEEVENT (line 171) | typedef struct _PH_GRAPH_MOUSEEVENT
type PH_GRAPH_DRAWPANEL (line 182) | typedef struct _PH_GRAPH_DRAWPANEL
type PH_GRAPH_BUFFERS (line 193) | typedef struct _PH_GRAPH_BUFFERS
type PH_GRAPH_STATE (line 223) | typedef struct _PH_GRAPH_STATE
FILE: third_party/phlib/include/guisup.h
type NMRUNFILEDLGW (line 28) | typedef struct _NMRUNFILEDLGW
type NMRUNFILEDLGW (line 36) | typedef NMRUNFILEDLGW NMRUNFILEDLG;
type PNMRUNFILEDLGW (line 37) | typedef PNMRUNFILEDLGW PNMRUNFILEDLG;
type LPNMRUNFILEDLGW (line 38) | typedef LPNMRUNFILEDLGW LPNMRUNFILEDLG;
type HANDLE (line 44) | typedef HANDLE HTHEME;
function FORCEINLINE (line 75) | FORCEINLINE VOID PhSetWindowStyle(
function FORCEINLINE (line 88) | FORCEINLINE VOID PhSetWindowExStyle(
function FORCEINLINE (line 124) | FORCEINLINE LRESULT PhReflectMessage(
function FORCEINLINE (line 160) | FORCEINLINE VOID PhSetListViewStyle(
type DLGTEMPLATEEX (line 361) | typedef struct _DLGTEMPLATEEX
type PH_LAYOUT_ITEM (line 404) | typedef struct _PH_LAYOUT_ITEM
type PH_LAYOUT_MANAGER (line 419) | typedef struct _PH_LAYOUT_MANAGER
function FORCEINLINE (line 460) | FORCEINLINE VOID PhResizingMinimumSize(
function FORCEINLINE (line 490) | FORCEINLINE VOID PhCopyControlRectangle(
type PH_ITEM_STATE (line 523) | typedef enum _PH_ITEM_STATE
function FORCEINLINE (line 629) | FORCEINLINE
function FORCEINLINE (line 652) | FORCEINLINE
function FORCEINLINE (line 671) | FORCEINLINE
FILE: third_party/phlib/include/guisupp.h
type PHP_ICON_ENTRY (line 4) | typedef struct _PHP_ICON_ENTRY
function FORCEINLINE (line 16) | FORCEINLINE ULONG PhpGetIconEntrySize(
FILE: third_party/phlib/include/handle.h
type _PH_HANDLE_TABLE (line 8) | struct _PH_HANDLE_TABLE
type _PH_HANDLE_TABLE (line 9) | struct _PH_HANDLE_TABLE
type PH_HANDLE_TABLE_ENTRY (line 11) | typedef struct _PH_HANDLE_TABLE_ENTRY
type PH_HANDLE_TABLE_INFORMATION_CLASS (line 123) | typedef enum _PH_HANDLE_TABLE_INFORMATION_CLASS
type PH_HANDLE_TABLE_BASIC_INFORMATION (line 130) | typedef struct _PH_HANDLE_TABLE_BASIC_INFORMATION
type PH_HANDLE_TABLE_FLAGS_INFORMATION (line 137) | typedef struct _PH_HANDLE_TABLE_FLAGS_INFORMATION
FILE: third_party/phlib/include/handlep.h
type PH_HANDLE_TABLE (line 27) | typedef struct _PH_HANDLE_TABLE
function FORCEINLINE (line 43) | FORCEINLINE VOID PhpLockHandleTableShared(
function FORCEINLINE (line 51) | FORCEINLINE VOID PhpUnlockHandleTableShared(
function FORCEINLINE (line 78) | FORCEINLINE HANDLE PhpEncodeHandle(
function FORCEINLINE (line 85) | FORCEINLINE ULONG PhpDecodeHandle(
FILE: third_party/phlib/include/hexeditp.h
type PHP_HEXEDIT_CONTEXT (line 4) | typedef struct _PHP_HEXEDIT_CONTEXT
function FORCEINLINE (line 87) | FORCEINLINE BOOLEAN PhpHexEditHasSelected(
FILE: third_party/phlib/include/json.h
type JSON_ARRAY_LIST_OBJECT (line 30) | typedef struct _JSON_ARRAY_LIST_OBJECT
FILE: third_party/phlib/include/kphapi.h
type KPH_PROCESS_INFORMATION_CLASS (line 8) | typedef enum _KPH_PROCESS_INFORMATION_CLASS
type KPH_THREAD_INFORMATION_CLASS (line 18) | typedef enum _KPH_THREAD_INFORMATION_CLASS
type KPH_PROCESS_HANDLE (line 28) | typedef struct _KPH_PROCESS_HANDLE
type KPH_PROCESS_HANDLE_INFORMATION (line 39) | typedef struct _KPH_PROCESS_HANDLE_INFORMATION
type KPH_OBJECT_INFORMATION_CLASS (line 47) | typedef enum _KPH_OBJECT_INFORMATION_CLASS
type KPH_FILE_OBJECT_INFORMATION (line 61) | typedef struct _KPH_FILE_OBJECT_INFORMATION
type KPH_FILE_OBJECT_DRIVER (line 75) | typedef struct _KPH_FILE_OBJECT_DRIVER
type DRIVER_INFORMATION_CLASS (line 82) | typedef enum _DRIVER_INFORMATION_CLASS
type DRIVER_BASIC_INFORMATION (line 90) | typedef struct _DRIVER_BASIC_INFORMATION
type DRIVER_NAME_INFORMATION (line 97) | typedef struct _DRIVER_NAME_INFORMATION
type DRIVER_SERVICE_KEY_NAME_INFORMATION (line 102) | typedef struct _DRIVER_SERVICE_KEY_NAME_INFORMATION
type ETWREG_BASIC_INFORMATION (line 109) | typedef struct _ETWREG_BASIC_INFORMATION
type KPH_SECURITY_LEVEL (line 123) | typedef enum _KPH_SECURITY_LEVEL
type KPH_DYN_STRUCT_DATA (line 132) | typedef struct _KPH_DYN_STRUCT_DATA
type KPH_DYN_PACKAGE (line 147) | typedef struct _KPH_DYN_PACKAGE
type KPH_DYN_CONFIGURATION (line 160) | typedef struct _KPH_DYN_CONFIGURATION
type ULONG (line 178) | typedef ULONG KPH_KEY, *PKPH_KEY;
type KPH_KEY_LEVEL (line 180) | typedef enum _KPH_KEY_LEVEL
FILE: third_party/phlib/include/kphuser.h
type KPH_PARAMETERS (line 10) | typedef struct _KPH_PARAMETERS
FILE: third_party/phlib/include/kphuserp.h
type KPHP_RETRIEVE_KEY_CONTEXT (line 15) | typedef struct _KPHP_RETRIEVE_KEY_CONTEXT
type KPHP_GET_L1_KEY_CONTEXT (line 37) | typedef struct _KPHP_GET_L1_KEY_CONTEXT
type KPH_OPEN_PROCESS_INPUT (line 53) | typedef struct _KPH_OPEN_PROCESS_INPUT
type KPH_OPEN_PROCESS_TOKEN_INPUT (line 68) | typedef struct _KPH_OPEN_PROCESS_TOKEN_INPUT
type KPH_TERMINATE_PROCESS_INPUT (line 83) | typedef struct _KPH_TERMINATE_PROCESS_INPUT
type KPH_READ_VIRTUAL_MEMORY_UNSAFE_INPUT (line 97) | typedef struct _KPH_READ_VIRTUAL_MEMORY_UNSAFE_INPUT
type KPH_OPEN_THREAD_INPUT (line 114) | typedef struct _KPH_OPEN_THREAD_INPUT
FILE: third_party/phlib/include/mapimg.h
type PH_MAPPED_IMAGE (line 10) | typedef struct _PH_MAPPED_IMAGE
type PH_REMOTE_MAPPED_IMAGE (line 141) | typedef struct _PH_REMOTE_MAPPED_IMAGE
type PH_MAPPED_IMAGE_EXPORTS (line 165) | typedef struct _PH_MAPPED_IMAGE_EXPORTS
type PH_MAPPED_IMAGE_EXPORT_ENTRY (line 177) | typedef struct _PH_MAPPED_IMAGE_EXPORT_ENTRY
type PH_MAPPED_IMAGE_EXPORT_FUNCTION (line 183) | typedef struct _PH_MAPPED_IMAGE_EXPORT_FUNCTION
type PH_MAPPED_IMAGE_IMPORTS (line 231) | typedef struct _PH_MAPPED_IMAGE_IMPORTS
type PH_MAPPED_IMAGE_IMPORT_DLL (line 244) | typedef struct _PH_MAPPED_IMAGE_IMPORT_DLL
type PH_MAPPED_IMAGE_IMPORT_ENTRY (line 259) | typedef struct _PH_MAPPED_IMAGE_IMPORT_ENTRY
type IMAGE_CFG_ENTRY (line 318) | typedef struct _IMAGE_CFG_ENTRY
type PH_MAPPED_IMAGE_CFG (line 328) | typedef struct _PH_MAPPED_IMAGE_CFG
type CFG_ENTRY_TYPE (line 361) | typedef enum _CFG_ENTRY_TYPE
type PH_IMAGE_RESOURCE_ENTRY (line 386) | typedef struct _PH_IMAGE_RESOURCE_ENTRY
type PH_MAPPED_IMAGE_RESOURCES (line 395) | typedef struct _PH_MAPPED_IMAGE_RESOURCES
type _PH_MAPPED_ARCHIVE (line 415) | struct _PH_MAPPED_ARCHIVE
type _PH_MAPPED_ARCHIVE (line 416) | struct _PH_MAPPED_ARCHIVE
type PH_MAPPED_ARCHIVE_MEMBER_TYPE (line 418) | typedef enum _PH_MAPPED_ARCHIVE_MEMBER_TYPE
type PH_MAPPED_ARCHIVE_MEMBER (line 425) | typedef struct _PH_MAPPED_ARCHIVE_MEMBER
type PH_MAPPED_ARCHIVE (line 437) | typedef struct _PH_MAPPED_ARCHIVE
type PH_MAPPED_ARCHIVE_IMPORT_ENTRY (line 451) | typedef struct _PH_MAPPED_ARCHIVE_IMPORT_ENTRY
type PH_ELF_IMAGE_SECTION (line 526) | typedef struct _PH_ELF_IMAGE_SECTION
type PH_ELF_IMAGE_SYMBOL_ENTRY (line 542) | typedef struct _PH_ELF_IMAGE_SYMBOL_ENTRY
FILE: third_party/phlib/include/phbasesup.h
type _PH_AUTO_POOL (line 16) | struct _PH_AUTO_POOL
type _PH_AUTO_POOL (line 17) | struct _PH_AUTO_POOL
type PHP_BASE_THREAD_DBG (line 19) | typedef struct _PHP_BASE_THREAD_DBG
function FORCEINLINE (line 53) | FORCEINLINE
function FORCEINLINE (line 70) | FORCEINLINE
function FORCEINLINE (line 108) | FORCEINLINE
function FORCEINLINE (line 227) | FORCEINLINE
type PH_EVENT (line 256) | typedef struct _PH_EVENT
function FORCEINLINE (line 302) | FORCEINLINE
function FORCEINLINE (line 323) | FORCEINLINE
function FORCEINLINE (line 340) | FORCEINLINE
type PH_BARRIER (line 363) | typedef struct _PH_BARRIER
function FORCEINLINE (line 388) | FORCEINLINE
type PH_RUNDOWN_PROTECT (line 405) | typedef struct _PH_RUNDOWN_PROTECT
type PH_RUNDOWN_WAIT_BLOCK (line 412) | typedef struct _PH_RUNDOWN_WAIT_BLOCK
function FORCEINLINE (line 446) | FORCEINLINE
function FORCEINLINE (line 455) | FORCEINLINE
function FORCEINLINE (line 479) | FORCEINLINE
function FORCEINLINE (line 499) | FORCEINLINE
type PH_INITONCE (line 523) | typedef struct _PH_INITONCE
function FORCEINLINE (line 555) | FORCEINLINE
function FORCEINLINE (line 567) | FORCEINLINE
function FORCEINLINE (line 659) | FORCEINLINE
function FORCEINLINE (line 678) | FORCEINLINE
function FORCEINLINE (line 687) | FORCEINLINE
function FORCEINLINE (line 701) | FORCEINLINE
function FORCEINLINE (line 715) | FORCEINLINE
function FORCEINLINE (line 729) | FORCEINLINE
type PH_STRINGREF (line 751) | typedef struct _PH_STRINGREF
type PH_BYTESREF (line 759) | typedef struct _PH_BYTESREF
type PH_RELATIVE_BYTESREF (line 767) | typedef struct _PH_RELATIVE_BYTESREF
function FORCEINLINE (line 778) | FORCEINLINE
function FORCEINLINE (line 789) | FORCEINLINE
function FORCEINLINE (line 800) | FORCEINLINE
function FORCEINLINE (line 811) | FORCEINLINE
function FORCEINLINE (line 821) | FORCEINLINE
function FORCEINLINE (line 835) | FORCEINLINE
function FORCEINLINE (line 954) | FORCEINLINE
function FORCEINLINE (line 969) | FORCEINLINE
function FORCEINLINE (line 984) | FORCEINLINE
function FORCEINLINE (line 1003) | FORCEINLINE
function FORCEINLINE (line 1018) | FORCEINLINE
function FORCEINLINE (line 1037) | FORCEINLINE
function FORCEINLINE (line 1052) | FORCEINLINE
function FORCEINLINE (line 1063) | FORCEINLINE
type PH_STRING (line 1090) | typedef struct _PH_STRING
function FORCEINLINE (line 1141) | FORCEINLINE
function FORCEINLINE (line 1153) | FORCEINLINE
function FORCEINLINE (line 1231) | FORCEINLINE
function FORCEINLINE (line 1243) | FORCEINLINE
function FORCEINLINE (line 1267) | FORCEINLINE
function FORCEINLINE (line 1288) | FORCEINLINE
function FORCEINLINE (line 1306) | FORCEINLINE
function FORCEINLINE (line 1320) | FORCEINLINE
function FORCEINLINE (line 1336) | FORCEINLINE
function FORCEINLINE (line 1357) | FORCEINLINE
function FORCEINLINE (line 1382) | FORCEINLINE
function FORCEINLINE (line 1411) | FORCEINLINE
function FORCEINLINE (line 1429) | FORCEINLINE
function FORCEINLINE (line 1456) | FORCEINLINE
function FORCEINLINE (line 1476) | FORCEINLINE
function FORCEINLINE (line 1500) | FORCEINLINE
function FORCEINLINE (line 1520) | FORCEINLINE
function FORCEINLINE (line 1545) | FORCEINLINE
function FORCEINLINE (line 1583) | FORCEINLINE
function FORCEINLINE (line 1621) | FORCEINLINE
function FORCEINLINE (line 1660) | FORCEINLINE
function FORCEINLINE (line 1679) | FORCEINLINE
type PH_BYTES (line 1696) | typedef struct _PH_BYTES
function FORCEINLINE (line 1740) | FORCEINLINE
type PH_UNICODE_DECODER (line 1764) | typedef struct _PH_UNICODE_DECODER
function FORCEINLINE (line 1798) | FORCEINLINE
function FORCEINLINE (line 1854) | FORCEINLINE
function FORCEINLINE (line 1874) | FORCEINLINE
type PH_STRING_BUILDER (line 2001) | typedef struct _PH_STRING_BUILDER
function FORCEINLINE (line 2131) | FORCEINLINE
type PH_BYTES_BUILDER (line 2152) | typedef struct _PH_BYTES_BUILDER
function FORCEINLINE (line 2186) | FORCEINLINE
type PH_ARRAY (line 2226) | typedef struct _PH_ARRAY
function FORCEINLINE (line 2238) | FORCEINLINE
type PH_LIST (line 2325) | typedef struct _PH_LIST
type PH_POINTER_LIST (line 2445) | typedef struct _PH_POINTER_LIST
function FORCEINLINE (line 2502) | FORCEINLINE
type PH_HASH_ENTRY (line 2528) | typedef struct _PH_HASH_ENTRY
function FORCEINLINE (line 2543) | FORCEINLINE
function FORCEINLINE (line 2560) | FORCEINLINE
function FORCEINLINE (line 2582) | FORCEINLINE
function FORCEINLINE (line 2614) | FORCEINLINE
function FORCEINLINE (line 2655) | FORCEINLINE
function FORCEINLINE (line 2684) | FORCEINLINE
function FORCEINLINE (line 2702) | FORCEINLINE
function FORCEINLINE (line 2748) | FORCEINLINE
type PH_HASHTABLE_ENTRY (line 2770) | typedef struct _PH_HASHTABLE_ENTRY
type PH_HASHTABLE (line 2821) | typedef struct _PH_HASHTABLE
type PH_HASHTABLE_ENUM_CONTEXT (line 2919) | typedef struct _PH_HASHTABLE_ENUM_CONTEXT
function FORCEINLINE (line 2926) | FORCEINLINE
function FORCEINLINE (line 2938) | FORCEINLINE
function FORCEINLINE (line 2974) | FORCEINLINE
function FORCEINLINE (line 2985) | FORCEINLINE
function FORCEINLINE (line 3003) | FORCEINLINE
type PH_KEY_VALUE_PAIR (line 3018) | typedef struct _PH_KEY_VALUE_PAIR
function NTAPI (line 3050) | NTAPI
type PH_FREE_LIST (line 3076) | typedef struct _PH_FREE_LIST
type PH_FREE_LIST_ENTRY (line 3085) | typedef struct _PH_FREE_LIST_ENTRY
type PH_CALLBACK_REGISTRATION (line 3144) | typedef struct _PH_CALLBACK_REGISTRATION
type PH_CALLBACK (line 3165) | typedef struct _PH_CALLBACK
function FORCEINLINE (line 3347) | FORCEINLINE
function FORCEINLINE (line 3356) | FORCEINLINE
function FORCEINLINE (line 3366) | FORCEINLINE
function FORCEINLINE (line 3375) | FORCEINLINE
function FORCEINLINE (line 3389) | FORCEINLINE
function FORCEINLINE (line 3399) | FORCEINLINE
function FORCEINLINE (line 3413) | FORCEINLINE
function FORCEINLINE (line 3427) | FORCEINLINE
function FORCEINLINE (line 3441) | FORCEINLINE
type PH_FORMAT_TYPE (line 3454) | typedef enum _PH_FORMAT_TYPE
type PH_FORMAT (line 3512) | typedef struct _PH_FORMAT
type PH_TREE_ENUMERATION_ORDER (line 3621) | typedef enum _PH_TREE_ENUMERATION_ORDER
type PH_AVL_LINKS (line 3632) | typedef struct _PH_AVL_LINKS
type _PH_AVL_TREE (line 3640) | struct _PH_AVL_TREE
type PH_AVL_TREE (line 3647) | typedef struct _PH_AVL_TREE
FILE: third_party/phlib/include/phconfig.h
function FORCEINLINE (line 84) | FORCEINLINE
FILE: third_party/phlib/include/phintrnl.h
type PHLIB_STATISTICS_BLOCK (line 4) | typedef struct _PHLIB_STATISTICS_BLOCK
FILE: third_party/phlib/include/phnative.h
type PH_TOKEN_ATTRIBUTES (line 35) | typedef struct _PH_TOKEN_ATTRIBUTES
type PH_PEB_OFFSET (line 159) | typedef enum _PH_PEB_OFFSET
type PH_ENVIRONMENT_VARIABLE (line 224) | typedef struct _PH_ENVIRONMENT_VARIABLE
type PH_PROCESS_WS_COUNTERS (line 257) | typedef struct _PH_PROCESS_WS_COUNTERS
type PH_ENUM_PROCESS_MODULES_PARAMETERS (line 518) | typedef struct _PH_ENUM_PROCESS_MODULES_PARAMETERS
type PH_MODULE_INFO (line 849) | typedef struct _PH_MODULE_INFO
FILE: third_party/phlib/include/phnativeinl.h
function FORCEINLINE (line 17) | FORCEINLINE
function FORCEINLINE (line 40) | FORCEINLINE
function FORCEINLINE (line 65) | FORCEINLINE
function FORCEINLINE (line 88) | FORCEINLINE
function FORCEINLINE (line 121) | FORCEINLINE
function FORCEINLINE (line 155) | FORCEINLINE
function FORCEINLINE (line 189) | FORCEINLINE
function FORCEINLINE (line 225) | FORCEINLINE
function FORCEINLINE (line 248) | FORCEINLINE
function FORCEINLINE (line 271) | FORCEINLINE
function FORCEINLINE (line 294) | FORCEINLINE
function FORCEINLINE (line 327) | FORCEINLINE
function FORCEINLINE (line 353) | FORCEINLINE
function FORCEINLINE (line 379) | FORCEINLINE
function FORCEINLINE (line 395) | FORCEINLINE
function FORCEINLINE (line 429) | FORCEINLINE
function FORCEINLINE (line 450) | FORCEINLINE
function FORCEINLINE (line 472) | FORCEINLINE
function FORCEINLINE (line 495) | FORCEINLINE
function FORCEINLINE (line 518) | FORCEINLINE
function FORCEINLINE (line 551) | FORCEINLINE
function FORCEINLINE (line 584) | FORCEINLINE
function FORCEINLINE (line 606) | FORCEINLINE
function FORCEINLINE (line 621) | FORCEINLINE
function FORCEINLINE (line 637) | FORCEINLINE
function FORCEINLINE (line 653) | FORCEINLINE
function FORCEINLINE (line 669) | FORCEINLINE
function FORCEINLINE (line 691) | FORCEINLINE
function FORCEINLINE (line 715) | FORCEINLINE
function FORCEINLINE (line 739) | FORCEINLINE
function FORCEINLINE (line 772) | FORCEINLINE
function FORCEINLINE (line 796) | FORCEINLINE
function FORCEINLINE (line 821) | FORCEINLINE
function FORCEINLINE (line 855) | FORCEINLINE
function FORCEINLINE (line 889) | FORCEINLINE
function FORCEINLINE (line 916) | FORCEINLINE
function FORCEINLINE (line 932) | FORCEINLINE
function FORCEINLINE (line 948) | FORCEINLINE
function FORCEINLINE (line 964) | FORCEINLINE
function FORCEINLINE (line 980) | FORCEINLINE
function FORCEINLINE (line 996) | FORCEINLINE
FILE: third_party/phlib/include/phnet.h
type PH_IP_ADDRESS (line 21) | typedef struct _PH_IP_ADDRESS
function FORCEINLINE (line 33) | FORCEINLINE BOOLEAN PhEqualIpAddress(
function FORCEINLINE (line 63) | FORCEINLINE ULONG PhHashIpAddress(
function FORCEINLINE (line 89) | FORCEINLINE BOOLEAN PhIsNullIpAddress(
type PH_IP_ENDPOINT (line 116) | typedef struct _PH_IP_ENDPOINT
function FORCEINLINE (line 122) | FORCEINLINE BOOLEAN PhEqualIpEndpoint(
function FORCEINLINE (line 132) | FORCEINLINE ULONG PhHashIpEndpoint(
FILE: third_party/phlib/include/phsup.h
type PH_SORT_ORDER (line 107) | typedef enum _PH_SORT_ORDER
function FORCEINLINE (line 114) | FORCEINLINE LONG PhModifySort(
function FORCEINLINE (line 135) | FORCEINLINE int charcmp(
function FORCEINLINE (line 143) | FORCEINLINE int ucharcmp(
function FORCEINLINE (line 151) | FORCEINLINE int shortcmp(
function FORCEINLINE (line 159) | FORCEINLINE int ushortcmp(
function FORCEINLINE (line 167) | FORCEINLINE int intcmp(
function FORCEINLINE (line 175) | FORCEINLINE int uintcmp(
function FORCEINLINE (line 183) | FORCEINLINE int int64cmp(
function FORCEINLINE (line 191) | FORCEINLINE int uint64cmp(
function FORCEINLINE (line 199) | FORCEINLINE int intptrcmp(
function FORCEINLINE (line 207) | FORCEINLINE int uintptrcmp(
function FORCEINLINE (line 215) | FORCEINLINE int singlecmp(
function FORCEINLINE (line 223) | FORCEINLINE int doublecmp(
function FORCEINLINE (line 231) | FORCEINLINE int wcsicmp2(
function FORCEINLINE (line 260) | FORCEINLINE void *_InterlockedExchangePointer(
function FORCEINLINE (line 287) | FORCEINLINE LONG_PTR _InterlockedIncrementPointer(
function FORCEINLINE (line 298) | FORCEINLINE LONG_PTR _InterlockedDecrementPointer(
function FORCEINLINE (line 333) | FORCEINLINE BOOLEAN _InterlockedIncrementNoZero(
function FORCEINLINE (line 360) | FORCEINLINE BOOLEAN _InterlockedIncrementPositive(
function FORCEINLINE (line 446) | FORCEINLINE ULONG PhCountBits(
function FORCEINLINE (line 461) | FORCEINLINE ULONG64 PhRoundNumber(
function FORCEINLINE (line 469) | FORCEINLINE ULONG PhMultiplyDivide(
function FORCEINLINE (line 478) | FORCEINLINE LONG PhMultiplyDivideSigned(
function FORCEINLINE (line 490) | FORCEINLINE VOID PhProbeAddress(
function FORCEINLINE (line 512) | FORCEINLINE PLARGE_INTEGER PhTimeoutFromMilliseconds(
function FORCEINLINE (line 525) | FORCEINLINE NTSTATUS PhGetLastWin32ErrorAsNtStatus()
FILE: third_party/phlib/include/phutil.h
type PH_INTEGER_PAIR (line 11) | typedef struct _PH_INTEGER_PAIR
type PH_SCALABLE_INTEGER_PAIR (line 17) | typedef struct _PH_SCALABLE_INTEGER_PAIR
type PH_RECTANGLE (line 31) | typedef struct _PH_RECTANGLE
function FORCEINLINE (line 53) | FORCEINLINE
function FORCEINLINE (line 69) | FORCEINLINE
function FORCEINLINE (line 85) | FORCEINLINE
function FORCEINLINE (line 96) | FORCEINLINE
function FORCEINLINE (line 145) | FORCEINLINE
function FORCEINLINE (line 159) | FORCEINLINE
type GUID_EX (line 319) | typedef union _GUID_EX
type PH_IMAGE_VERSION_INFO (line 524) | typedef struct _PH_IMAGE_VERSION_INFO
type PH_CREATE_PROCESS_INFO (line 649) | typedef struct _PH_CREATE_PROCESS_INFO
type PH_CREATE_PROCESS_AS_USER_INFO (line 710) | typedef struct _PH_CREATE_PROCESS_AS_USER_INFO
type PH_FLAG_MAPPING (line 838) | typedef struct _PH_FLAG_MAPPING
type PH_FILETYPE_FILTER (line 926) | typedef struct _PH_FILETYPE_FILTER
type PH_HASH_ALGORITHM (line 975) | typedef enum _PH_HASH_ALGORITHM
type PH_HASH_CONTEXT (line 983) | typedef struct _PH_HASH_CONTEXT
type PH_COMMAND_LINE_OPTION_TYPE (line 1016) | typedef enum _PH_COMMAND_LINE_OPTION_TYPE
type PH_COMMAND_LINE_OPTION (line 1023) | typedef struct _PH_COMMAND_LINE_OPTION
FILE: third_party/phlib/include/provider.h
type PH_PROVIDER_THREAD_STATE (line 13) | typedef enum _PH_PROVIDER_THREAD_STATE
type _PH_PROVIDER_THREAD (line 24) | struct _PH_PROVIDER_THREAD
type _PH_PROVIDER_THREAD (line 25) | struct _PH_PROVIDER_THREAD
type PH_PROVIDER_REGISTRATION (line 27) | typedef struct _PH_PROVIDER_REGISTRATION
type PH_PROVIDER_THREAD (line 39) | typedef struct _PH_PROVIDER_THREAD
FILE: third_party/phlib/include/queuedlock.h
type PH_QUEUED_LOCK (line 27) | typedef struct _PH_QUEUED_LOCK
type DECLSPEC_ALIGN (line 38) | struct DECLSPEC_ALIGN
type _PH_QUEUED_WAIT_BLOCK (line 41) | struct _PH_QUEUED_WAIT_BLOCK
type _PH_QUEUED_WAIT_BLOCK (line 46) | struct _PH_QUEUED_WAIT_BLOCK
type _PH_QUEUED_WAIT_BLOCK (line 48) | struct _PH_QUEUED_WAIT_BLOCK
function FORCEINLINE (line 60) | FORCEINLINE
function FORCEINLINE (line 77) | FORCEINLINE
function FORCEINLINE (line 98) | FORCEINLINE
function BOOLEAN (line 116) | BOOLEAN
function FORCEINLINE (line 147) | FORCEINLINE
function FORCEINLINE (line 171) | FORCEINLINE
function FORCEINLINE (line 191) | FORCEINLINE
function FORCEINLINE (line 210) | FORCEINLINE
type PH_CONDITION (line 229) | typedef struct _PH_QUEUED_LOCK PH_CONDITION, *PPH_CONDITION;
function FORCEINLINE (line 233) | FORCEINLINE
type PH_WAKE_EVENT (line 289) | typedef struct _PH_QUEUED_LOCK PH_WAKE_EVENT, *PPH_WAKE_EVENT;
function FORCEINLINE (line 293) | FORCEINLINE
function FORCEINLINE (line 319) | FORCEINLINE
FILE: third_party/phlib/include/ref.h
type _PH_OBJECT_TYPE (line 52) | struct _PH_OBJECT_TYPE
type _PH_OBJECT_TYPE (line 53) | struct _PH_OBJECT_TYPE
type _PH_QUEUED_LOCK (line 55) | struct _PH_QUEUED_LOCK
type PH_QUEUED_LOCK (line 56) | typedef struct _PH_QUEUED_LOCK PH_QUEUED_LOCK, *PPH_QUEUED_LOCK;
type PH_OBJECT_TYPE_PARAMETERS (line 67) | typedef struct _PH_OBJECT_TYPE_PARAMETERS
type PH_OBJECT_TYPE_INFORMATION (line 73) | typedef struct _PH_OBJECT_TYPE_INFORMATION
function FORCEINLINE (line 194) | FORCEINLINE
function FORCEINLINE (line 210) | FORCEINLINE
function FORCEINLINE (line 225) | FORCEINLINE
function FORCEINLINE (line 237) | FORCEINLINE
type PH_AUTO_POOL (line 260) | typedef struct _PH_AUTO_POOL
FILE: third_party/phlib/include/refp.h
type PH_OBJECT_HEADER (line 37) | typedef struct _PH_OBJECT_HEADER
type PH_OBJECT_TYPE (line 127) | typedef struct _PH_OBJECT_TYPE
function FORCEINLINE (line 148) | FORCEINLINE
FILE: third_party/phlib/include/secedit.h
type _PSP (line 8) | struct _PSP
type PH_ACCESS_ENTRY (line 12) | typedef struct _PH_ACCESS_ENTRY
type PH_STD_OBJECT_SECURITY (line 46) | typedef struct _PH_STD_OBJECT_SECURITY
function FORCEINLINE (line 53) | FORCEINLINE ACCESS_MASK PhGetAccessForGetSecurity(
function FORCEINLINE (line 84) | FORCEINLINE ACCESS_MASK PhGetAccessForSetSecurity(
FILE: third_party/phlib/include/seceditp.h
type PhSecurityInformation (line 7) | typedef struct
type PhSecurityInformation2 (line 22) | typedef struct
type PhSecurityIDataObject (line 29) | typedef struct
FILE: third_party/phlib/include/settings.h
type PH_SETTING_TYPE (line 25) | typedef enum _PH_SETTING_TYPE
type PH_SETTING (line 34) | typedef struct _PH_SETTING
function FORCEINLINE (line 122) | FORCEINLINE
type PH_SETTING_CREATE (line 222) | typedef struct _PH_SETTING_CREATE
FILE: third_party/phlib/include/symprv.h
type PH_SYMBOL_PROVIDER (line 13) | typedef struct _PH_SYMBOL_PROVIDER
type PH_SYMBOL_RESOLVE_LEVEL (line 26) | typedef enum _PH_SYMBOL_RESOLVE_LEVEL
type PH_SYMBOL_INFORMATION (line 34) | typedef struct _PH_SYMBOL_INFORMATION
type PH_SYMBOL_LINE_INFORMATION (line 42) | typedef struct _PH_SYMBOL_LINE_INFORMATION
type PH_SYMBOL_EVENT_TYPE (line 48) | typedef enum _PH_SYMBOL_EVENT_TYPE
type PH_SYMBOL_EVENT_DATA (line 57) | typedef struct _PH_SYMBOL_EVENT_DATA
type _tagSTACKFRAME64 (line 187) | struct _tagSTACKFRAME64
type _tagADDRESS64 (line 188) | struct _tagADDRESS64
type BOOL (line 190) | typedef BOOL (__stdcall *PREAD_PROCESS_MEMORY_ROUTINE64)(
type PVOID (line 198) | typedef PVOID (__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
type ULONG64 (line 203) | typedef ULONG64 (__stdcall *PGET_MODULE_BASE_ROUTINE64)(
type ULONG64 (line 208) | typedef ULONG64 (__stdcall *PTRANSLATE_ADDRESS_ROUTINE64)(
type MINIDUMP_TYPE (line 214) | typedef enum _MINIDUMP_TYPE MINIDUMP_TYPE;
type _MINIDUMP_EXCEPTION_INFORMATION (line 215) | struct _MINIDUMP_EXCEPTION_INFORMATION
type _MINIDUMP_USER_STREAM_INFORMATION (line 216) | struct _MINIDUMP_USER_STREAM_INFORMATION
type _MINIDUMP_CALLBACK_INFORMATION (line 217) | struct _MINIDUMP_CALLBACK_INFORMATION
type PH_THREAD_STACK_FRAME (line 258) | typedef struct _PH_THREAD_STACK_FRAME
FILE: third_party/phlib/include/treenew.h
type PH_TREENEW_COLUMN (line 13) | typedef struct _PH_TREENEW_COLUMN
type PH_TREENEW_NODE (line 44) | typedef struct _PH_TREENEW_NODE
type PH_TREENEW_CELL_PARTS (line 165) | typedef struct _PH_TREENEW_CELL_PARTS
type PH_TREENEW_HIT_TEST (line 178) | typedef struct _PH_TREENEW_HIT_TEST
type PH_TREENEW_MESSAGE (line 188) | typedef enum _PH_TREENEW_MESSAGE
type PH_TREENEW_GET_CHILDREN (line 233) | typedef struct _PH_TREENEW_GET_CHILDREN
type PH_TREENEW_IS_LEAF (line 242) | typedef struct _PH_TREENEW_IS_LEAF
type PH_TREENEW_GET_CELL_TEXT (line 250) | typedef struct _PH_TREENEW_GET_CELL_TEXT
type PH_TREENEW_GET_NODE_COLOR (line 259) | typedef struct _PH_TREENEW_GET_NODE_COLOR
type PH_TREENEW_GET_NODE_FONT (line 268) | typedef struct _PH_TREENEW_GET_NODE_FONT
type PH_TREENEW_GET_NODE_ICON (line 276) | typedef struct _PH_TREENEW_GET_NODE_ICON
type PH_TREENEW_GET_CELL_TOOLTIP (line 284) | typedef struct _PH_TREENEW_GET_CELL_TOOLTIP
type PH_TREENEW_CUSTOM_DRAW (line 296) | typedef struct _PH_TREENEW_CUSTOM_DRAW
type PH_TREENEW_MOUSE_EVENT (line 306) | typedef struct _PH_TREENEW_MOUSE_EVENT
type PH_TREENEW_KEY_EVENT (line 314) | typedef struct _PH_TREENEW_KEY_EVENT
type PH_TREENEW_NODE_EVENT (line 321) | typedef struct _PH_TREENEW_NODE_EVENT
type PH_TREENEW_CONTEXT_MENU (line 329) | typedef struct _PH_TREENEW_CONTEXT_MENU
type PH_TREENEW_HEADER_MOUSE_EVENT (line 338) | typedef struct _PH_TREENEW_HEADER_MOUSE_EVENT
type PH_TREENEW_SEARCH_EVENT (line 346) | typedef struct _PH_TREENEW_SEARCH_EVENT
type PH_TREENEW_VIEW_PARTS (line 530) | typedef struct _PH_TREENEW_VIEW_PARTS
function FORCEINLINE (line 549) | FORCEINLINE VOID PhInitializeTreeNewNode(
function FORCEINLINE (line 559) | FORCEINLINE VOID PhInvalidateTreeNewNode(
function FORCEINLINE (line 572) | FORCEINLINE BOOLEAN PhAddTreeNewColumn(
function FORCEINLINE (line 601) | FORCEINLINE BOOLEAN PhAddTreeNewColumnEx(
function FORCEINLINE (line 633) | FORCEINLINE BOOLEAN PhAddTreeNewColumnEx2(
FILE: third_party/phlib/include/treenewp.h
type PH_TREENEW_CONTEXT (line 17) | typedef struct _PH_TREENEW_CONTEXT
FILE: third_party/phlib/include/verify.h
type VERIFY_RESULT (line 13) | typedef enum _VERIFY_RESULT
type PH_VERIFY_FILE_INFO (line 28) | typedef struct _PH_VERIFY_FILE_INFO
FILE: third_party/phlib/include/verifyp.h
type CATALOG_INFO (line 6) | typedef struct _CATALOG_INFO
type CRYPTUI_VIEWSIGNERINFO_STRUCT (line 12) | typedef struct tagCRYPTUI_VIEWSIGNERINFO_STRUCT {
type const (line 48) | typedef BOOL (WINAPI *_CryptCATAdminAcquireContext2)(
FILE: third_party/phlib/include/workqueue.h
type PH_WORK_QUEUE (line 13) | typedef struct _PH_WORK_QUEUE
type PH_WORK_QUEUE_ENVIRONMENT (line 37) | typedef struct _PH_WORK_QUEUE_ENVIRONMENT
FILE: third_party/phlib/include/workqueuep.h
type PH_WORK_QUEUE_ITEM (line 4) | typedef struct _PH_WORK_QUEUE_ITEM
FILE: third_party/phlib/json.c
function json_object_ptr (line 30) | static json_object_ptr json_get_object(
function PVOID (line 45) | PVOID PhCreateJsonParser(
function VOID (line 52) | VOID PhFreeJsonParser(
function PPH_STRING (line 59) | PPH_STRING PhGetJsonValueAsString(
function INT64 (line 72) | INT64 PhGetJsonValueAsLong64(
function PVOID (line 80) | PVOID PhCreateJsonObject(
function PVOID (line 87) | PVOID PhGetJsonObject(
function INT (line 95) | INT PhGetJsonObjectLength(
function BOOLEAN (line 102) | BOOLEAN PhGetJsonObjectBool(
function VOID (line 110) | VOID PhAddJsonObject(
function PVOID (line 119) | PVOID PhCreateJsonArray(
function VOID (line 126) | VOID PhAddJsonArrayObject(
function PPH_STRING (line 134) | PPH_STRING PhGetJsonArrayString(
function INT64 (line 146) | INT64 PhGetJsonArrayLong64(
function INT (line 154) | INT PhGetJsonArrayLength(
function PVOID (line 161) | PVOID PhGetJsonArrayIndexObject(
function PPH_LIST (line 169) | PPH_LIST PhGetJsonObjectAsArrayList(
function PVOID (line 194) | PVOID PhLoadJsonObjectFromFile(
function VOID (line 201) | VOID PhSaveJsonObjectToFile(
FILE: third_party/phlib/jsonc/arraylist.c
type array_list (line 26) | struct array_list
type array_list (line 29) | struct array_list
type array_list (line 31) | struct array_list
type array_list (line 31) | struct array_list
function array_list_free (line 43) | extern void
type array_list (line 54) | struct array_list
function array_list_expand_internal (line 60) | static int array_list_expand_internal(struct array_list *arr, int max)
function array_list_put_idx (line 74) | int
function array_list_add (line 84) | int
function array_list_sort (line 90) | void
function array_list_length (line 97) | int
FILE: third_party/phlib/jsonc/arraylist.h
type array_list (line 23) | struct array_list
type array_list (line 31) | struct array_list
type array_list (line 35) | struct array_list
type array_list (line 38) | struct array_list
type array_list (line 41) | struct array_list
type array_list (line 44) | struct array_list
type array_list (line 47) | struct array_list
type array_list (line 50) | struct array_list
FILE: third_party/phlib/jsonc/debug.c
function mc_set_debug (line 36) | void mc_set_debug(int debug) { _debug = debug; }
function mc_get_debug (line 37) | int mc_get_debug(void) { return _debug; }
function mc_set_syslog (line 39) | extern void mc_set_syslog(int syslog)
function mc_debug (line 44) | void mc_debug(const char *msg, ...)
function mc_error (line 59) | void mc_error(const char *msg, ...)
function mc_info (line 72) | void mc_info(const char *msg, ...)
FILE: third_party/phlib/jsonc/json_c_version.c
function json_c_version_num (line 16) | int json_c_version_num(void)
FILE: third_party/phlib/jsonc/json_inttypes.h
type __int32 (line 10) | typedef __int32 int32_t;
type __int64 (line 13) | typedef __int64 int64_t;
FILE: third_party/phlib/jsonc/json_object.c
type json_object (line 52) | struct json_object
type json_object (line 53) | struct json_object
type json_type (line 53) | enum json_type
type lh_table (line 67) | struct lh_table
function json_object_init (line 70) | static void json_object_init(void) {
function json_object_fini (line 76) | static void json_object_fini(void) {
function json_escape_str (line 96) | static int json_escape_str(struct printbuf *pb, char *str, size_t len)
type json_object (line 142) | struct json_object
type json_object (line 142) | struct json_object
function json_object_put (line 150) | int json_object_put(struct json_object *jso)
function json_object_generic_delete (line 169) | static void json_object_generic_delete(struct json_object* jso)
type json_object (line 180) | struct json_object
type json_type (line 180) | enum json_type
type json_object (line 182) | struct json_object
type json_object (line 184) | struct json_object
type json_object (line 184) | struct json_object
function json_object_is_type (line 199) | int json_object_is_type(struct json_object *jso, enum json_type type)
function json_object_get_type (line 206) | enum json_type json_object_get_type(struct json_object *jso)
function json_object_set_serializer (line 215) | void json_object_set_serializer(json_object *jso,
type json_object (line 266) | struct json_object
type json_object (line 284) | struct json_object
function indent (line 289) | static void indent(struct printbuf *pb, int level, int flags)
function json_object_object_to_json_string (line 299) | static int json_object_object_to_json_string(struct json_object* jso,
function json_object_lh_entry_free (line 346) | static void json_object_lh_entry_free(struct lh_entry *ent)
function json_object_object_delete (line 352) | static void json_object_object_delete(struct json_object* jso)
type json_object (line 358) | struct json_object
type json_object (line 360) | struct json_object
type lh_table (line 374) | struct lh_table
type json_object (line 374) | struct json_object
function json_object_object_add (line 385) | void json_object_object_add(struct json_object* jso, const char *key,
function json_object_object_length (line 404) | int json_object_object_length(struct json_object *jso)
type json_object (line 409) | struct json_object
type json_object (line 409) | struct json_object
type json_object (line 411) | struct json_object
function json_bool (line 416) | json_bool json_object_object_get_ex(struct json_object* jso, const char ...
function json_object_object_del (line 435) | void json_object_object_del(struct json_object* jso, const char *key)
function json_object_boolean_to_json_string (line 443) | static int json_object_boolean_to_json_string(struct json_object* jso,
type json_object (line 452) | struct json_object
type json_object (line 454) | struct json_object
function json_bool (line 461) | json_bool json_object_get_boolean(struct json_object *jso)
function json_object_int_to_json_string (line 481) | static int json_object_int_to_json_string(struct json_object* jso,
type json_object (line 489) | struct json_object
type json_object (line 491) | struct json_object
function json_object_get_int (line 498) | int32_t json_object_get_int(struct json_object *jso)
type json_object (line 537) | struct json_object
type json_object (line 539) | struct json_object
function json_object_get_int64 (line 546) | int64_t json_object_get_int64(struct json_object *jso)
function json_object_double_to_json_string (line 568) | static int json_object_double_to_json_string(struct json_object* jso,
type json_object (line 609) | struct json_object
type json_object (line 611) | struct json_object
type json_object (line 619) | struct json_object
type json_object (line 621) | struct json_object
function json_object_userdata_to_json_string (line 629) | int json_object_userdata_to_json_string(struct json_object *jso, struct ...
function json_object_free_userdata (line 636) | void json_object_free_userdata(struct json_object *jso, void *userdata)
function json_object_get_double (line 641) | double json_object_get_double(struct json_object *jso)
function json_object_string_to_json_string (line 693) | static int json_object_string_to_json_string(struct json_object* jso,
function json_object_string_delete (line 704) | static void json_object_string_delete(struct json_object* jso)
type json_object (line 710) | struct json_object
type json_object (line 712) | struct json_object
type json_object (line 721) | struct json_object
type json_object (line 723) | struct json_object
type json_object (line 734) | struct json_object
function json_object_get_string_len (line 747) | int json_object_get_string_len(struct json_object *jso) {
function json_object_array_to_json_string (line 760) | static int json_object_array_to_json_string(struct json_object* jso,
function json_object_array_entry_free (line 802) | static void json_object_array_entry_free(void *data)
function json_object_array_delete (line 807) | static void json_object_array_delete(struct json_object* jso)
type json_object (line 813) | struct json_object
type json_object (line 815) | struct json_object
type array_list (line 823) | struct array_list
type json_object (line 823) | struct json_object
function json_object_array_sort (line 834) | void json_object_array_sort(struct json_object *jso, int(__cdecl* sort_f...
function json_object_array_length (line 839) | int json_object_array_length(struct json_object *jso)
function json_object_array_add (line 844) | int json_object_array_add(struct json_object *jso,struct json_object *val)
function json_object_array_put_idx (line 849) | int json_object_array_put_idx(struct json_object *jso, int idx,
type json_object (line 855) | struct json_object
type json_object (line 855) | struct json_object
type json_object (line 858) | struct json_object
FILE: third_party/phlib/jsonc/json_object.h
type json_object_iter (line 68) | struct json_object_iter
type json_bool (line 77) | typedef int json_bool;
type printbuf (line 78) | typedef struct printbuf printbuf;
type lh_table (line 79) | typedef struct lh_table lh_table;
type array_list (line 80) | typedef struct array_list array_list;
type json_object (line 81) | typedef struct json_object json_object, *json_object_ptr;
type json_object_iter (line 82) | typedef struct json_object_iter json_object_iter;
type json_tokener (line 83) | typedef struct json_tokener json_tokener;
type json_object (line 88) | struct json_object
type json_object (line 93) | struct json_object
type printbuf (line 94) | struct printbuf
type json_type (line 100) | typedef enum json_type {
type json_object (line 119) | struct json_object
type json_object (line 119) | struct json_object
type json_object (line 129) | struct json_object
type json_object (line 143) | struct json_object
type json_type (line 143) | enum json_type
type json_type (line 159) | enum json_type
type json_object (line 159) | struct json_object
type json_object (line 167) | struct json_object
type json_object (line 174) | struct json_object
type json_object (line 240) | struct json_object
type lh_table (line 246) | struct lh_table
type json_object (line 246) | struct json_object
type json_object (line 251) | struct json_object
type json_object (line 269) | struct json_object
type json_object (line 270) | struct json_object
type json_object (line 289) | struct json_object
type json_object (line 289) | struct json_object
type json_object (line 310) | struct json_object
type json_object (line 312) | struct json_object
type json_object (line 323) | struct json_object
type json_object (line 380) | struct json_object
type array_list (line 386) | struct array_list
type json_object (line 386) | struct json_object
type json_object (line 392) | struct json_object
type json_object (line 402) | struct json_object
type json_object (line 413) | struct json_object
type json_object (line 414) | struct json_object
type json_object (line 431) | struct json_object
type json_object (line 432) | struct json_object
type json_object (line 439) | struct json_object
type json_object (line 439) | struct json_object
type json_object (line 448) | struct json_object
type json_object (line 461) | struct json_object
type json_object (line 472) | struct json_object
type json_object (line 479) | struct json_object
type json_object (line 496) | struct json_object
type json_object (line 511) |
Condensed preview — 410 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,024K chars).
[
{
"path": ".gitignore",
"chars": 135,
"preview": ".vs/\nobj/\nbin/\npackages/\n_packages/\ntests/\n\n*.obj\n*.log\n*.tlog\n*.VC.db\n*.cache\n*.pdb\n*.pch\n*.user\n\r\n_ReSharper.Caches/\r\n"
},
{
"path": "ClrPhlib/AssemblyInfo.cpp",
"chars": 1263,
"preview": "using namespace System;\nusing namespace System::Reflection;\nusing namespace System::Runtime::CompilerServices;\nusing nam"
},
{
"path": "ClrPhlib/ClrPhlib.cpp",
"chars": 282,
"preview": "#include <ClrPhlib.h>\r\n\r\nusing namespace Dependencies;\r\n\r\nClrPh::CLRPH_ARCH ClrPh::Phlib::GetClrPhArch()\r\n{\r\n#if _WIN64\r"
},
{
"path": "ClrPhlib/ClrPhlib.manifest",
"chars": 1699,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
},
{
"path": "ClrPhlib/ClrPhlib.vcxproj",
"chars": 15622,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.micro"
},
{
"path": "ClrPhlib/ClrPhlib.vcxproj.filters",
"chars": 3690,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ClrPhlib/include/ApiSet.h",
"chars": 3181,
"preview": "#pragma once\r\n#include <ph.h>\r\n\r\n#ifdef __cplusplus\r\nextern \"C\" {\r\n#endif\r\n\r\n///////////////////////////////////////////"
},
{
"path": "ClrPhlib/include/ClrPhSymbolProvider.h",
"chars": 755,
"preview": "#pragma once\n\n#include <ClrPhlib.h>\n#include <UnmanagedSymPrv.h>\n\nusing namespace Dependencies::ClrPh;\n\n// Symbol resolu"
},
{
"path": "ClrPhlib/include/ClrPhlib.h",
"chars": 5575,
"preview": "// ClrPhlib.h\r\n\r\n#pragma once\r\n\r\n#include <UnmanagedPh.h>\r\n#using <System.dll>\r\n\r\nusing namespace System;\r\nusing namespa"
},
{
"path": "ClrPhlib/include/NativeFile.h",
"chars": 1513,
"preview": "// Native.h\n#pragma once\n\n#include <UnmanagedPh.h>\n#include <stdint.h>\n#using <System.dll>\n\nusing namespace System;\n\nnam"
},
{
"path": "ClrPhlib/include/UnmanagedPh.h",
"chars": 1216,
"preview": "#pragma once\n\n#include <ph.h>\n#include <mapimg.h>\n\n\n// C++ part of the PE class interfacing with phlib.\n// Responsible f"
},
{
"path": "ClrPhlib/include/UnmanagedSymPrv.h",
"chars": 1869,
"preview": "#pragma once\n\n#include <stdbool.h>\n\n#include <ph.h>\n#include <symprv.h>\n#include <ClrPhlib.h>\n\n\n// Native Symbol Provide"
},
{
"path": "ClrPhlib/resource.h",
"chars": 88,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by app.rc\n"
},
{
"path": "ClrPhlib/src/managed/NativeFile.cpp",
"chars": 5601,
"preview": "#include <NativeFile.h>\n#include <ClrPhLib.h>\n#include <phconfig.h>\n#include <vcclr.h> \n#include <bcrypt.h>\n\nusing names"
},
{
"path": "ClrPhlib/src/managed/PE.cpp",
"chars": 5884,
"preview": "#include <ClrPhlib.h>\n#include <UnmanagedPh.h>\n\nusing namespace Dependencies;\nusing namespace System::Text;\nusing namesp"
},
{
"path": "ClrPhlib/src/managed/PeExport.cpp",
"chars": 1310,
"preview": "#include <ClrPhlib.h>\n#include <UnmanagedPh.h>\n\n\nusing namespace Dependencies;\nusing namespace ClrPh;\nPeExport::PeExport"
},
{
"path": "ClrPhlib/src/managed/PeImport.cpp",
"chars": 2411,
"preview": "#include <ClrPhlib.h>\n#include <UnmanagedPh.h>\n\n\nusing namespace Dependencies;\nusing namespace ClrPh;\n\n\nPeImport::PeImpo"
},
{
"path": "ClrPhlib/src/managed/PhSymbolProvider.cpp",
"chars": 2838,
"preview": "#include <ClrPhlib.h>\n#include <UnmanagedPh.h>\n#include <ClrPhSymbolProvider.h>\n\nusing namespace Dependencies;\nusing nam"
},
{
"path": "ClrPhlib/src/managed/Phlib.cpp",
"chars": 11242,
"preview": "#include <ClrPhlib.h>\r\n#include <UnmanagedPh.h>\r\n#include <ApiSet.h>\r\n\r\n\r\n#include <phnative.h>\r\n#include <ntpsapi.h>\r\n\r"
},
{
"path": "ClrPhlib/src/unmanaged/UnmanagedPE.cpp",
"chars": 1785,
"preview": "#include <ClrPhlib.h>\r\n#include <UnmanagedPh.h>\r\n#include <phnt_ntdef.h>\r\n\r\nusing namespace System;\r\nusing namespace Dep"
},
{
"path": "ClrPhlib/src/unmanaged/UnmanagedSymPrv.cpp",
"chars": 4584,
"preview": "#include <UnmanagedSymPrv.h>\n\n\nusing namespace System;\nusing namespace Dependencies::ClrPh;\n\n#define DBGHELP_RELPATH \n\nV"
},
{
"path": "ClrPhlib/src/unmanaged/demangle.cpp",
"chars": 7247,
"preview": "#include <UnmanagedSymPrv.h>\n#include <llvm/Demangle/Demangle.h>\n#include <stdlib.h>\n#using <System.dll>\n\nextern \"C\" {\n\t"
},
{
"path": "Dependencies/App.config",
"chars": 186,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n <startup> \r\n <supportedRuntime version=\"v4.0\" sku=\"."
},
{
"path": "Dependencies/Dependencies.csproj",
"chars": 7208,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbu"
},
{
"path": "Dependencies/Program.cs",
"chars": 28683,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Xml.Linq;\nusing System.IO;\nusing System.Linq;\nusing System"
},
{
"path": "Dependencies/Properties/AssemblyInfo.cs",
"chars": 1529,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// Les infor"
},
{
"path": "Dependencies/packages.config",
"chars": 285,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"Mono.Cecil\" version=\"0.11.4\" targetFramework=\"net461\" "
},
{
"path": "Dependencies.sln",
"chars": 13258,
"preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.3"
},
{
"path": "DependenciesGui/About.xaml",
"chars": 1929,
"preview": "<Window x:Class=\"Dependencies.About\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n "
},
{
"path": "DependenciesGui/About.xaml.cs",
"chars": 2568,
"preview": "using System;\nusing System.Diagnostics;\nusing System.Net;\nusing System.Reflection;\nusing System.Threading.Tasks;\nusing "
},
{
"path": "DependenciesGui/App.config",
"chars": 2582,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <configSections>\n <sectionGroup name=\"userSettings\" ty"
},
{
"path": "DependenciesGui/App.xaml",
"chars": 1192,
"preview": "<Application x:Class=\"Dependencies.App\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n"
},
{
"path": "DependenciesGui/App.xaml.cs",
"chars": 5520,
"preview": "using System;\nusing System.Windows;\nusing System.Windows.Shell;\nusing System.ComponentModel;\nusing System.IO;\n\nusing De"
},
{
"path": "DependenciesGui/CustomHeaderViewModel.cs",
"chars": 1154,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Runtime.Com"
},
{
"path": "DependenciesGui/Dependencies.manifest",
"chars": 1745,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
},
{
"path": "DependenciesGui/DependenciesGui.csproj",
"chars": 13985,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbu"
},
{
"path": "DependenciesGui/DependencyCustomListView.xaml",
"chars": 3048,
"preview": "<ResourceDictionary \n \n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmln"
},
{
"path": "DependenciesGui/DependencyCustomListView.xaml.cs",
"chars": 3799,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing System."
},
{
"path": "DependenciesGui/DependencyExportList.xaml",
"chars": 5650,
"preview": "<local:DependencyCustomListView x:Class=\"Dependencies.DependencyExportList\"\n xmlns=\"http://schemas.microsoft.com"
},
{
"path": "DependenciesGui/DependencyExportList.xaml.cs",
"chars": 1795,
"preview": "using System;\nusing System.Linq;\nusing System.Windows;\nusing System.Collections.Generic;\nusing System.Windows.Input;\n\nu"
},
{
"path": "DependenciesGui/DependencyImportList.xaml",
"chars": 5881,
"preview": "<local:DependencyCustomListView x:Class=\"Dependencies.DependencyImportList\"\n xmlns=\"http://schemas.microsoft.com"
},
{
"path": "DependenciesGui/DependencyImportList.xaml.cs",
"chars": 2653,
"preview": "using System;\nusing System.Linq;\nusing System.Windows;\nusing System.Collections.Generic;\nusing System.Windows.Input;\n\nu"
},
{
"path": "DependenciesGui/DependencyModuleList.xaml",
"chars": 9157,
"preview": "<local:DependencyCustomListView x:Class=\"Dependencies.DependencyModuleList\"\n xmlns=\"http://schemas.microsoft.com"
},
{
"path": "DependenciesGui/DependencyModuleList.xaml.cs",
"chars": 3916,
"preview": "using System;\nusing System.Windows;\nusing System.Collections.Generic;\nusing System.Windows.Controls;\nusing System.Windo"
},
{
"path": "DependenciesGui/DependencyWindow.xaml",
"chars": 13507,
"preview": "<TabItem x:Class=\"Dependencies.DependencyWindow\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentati"
},
{
"path": "DependenciesGui/DependencyWindow.xaml.cs",
"chars": 53038,
"preview": "using System;\nusing System.IO;\nusing System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Controls;\nus"
},
{
"path": "DependenciesGui/DragablzCustomHeader.cs",
"chars": 576,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "DependenciesGui/DragablzCustomHeader.xaml",
"chars": 1538,
"preview": "<UserControl x:Class=\"Dependencies.DragablzCustomHeader\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xa"
},
{
"path": "DependenciesGui/FilterControl/FilterControl.cs",
"chars": 15395,
"preview": "using System;\nusing System.Windows.Controls;\nusing System.Windows;\nusing System.Windows.Threading;\nusing System.Windows"
},
{
"path": "DependenciesGui/FilterControl/FilterControl.generic.xaml",
"chars": 7902,
"preview": "<ResourceDictionary \n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:x=\"http://schemas."
},
{
"path": "DependenciesGui/GridViewSort.cs",
"chars": 14407,
"preview": "using System.ComponentModel;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing Sys"
},
{
"path": "DependenciesGui/Helpers/RelayCommand.cs",
"chars": 1208,
"preview": "using System;\nusing System.Windows.Input;\nusing System.Diagnostics;\n\nnamespace Dependencies\n{\n public class RelayCom"
},
{
"path": "DependenciesGui/Helpers/SettingBindingHandler.cs",
"chars": 1800,
"preview": "using System.ComponentModel;\nusing System.Collections.Generic;\n\nnamespace Dependencies\n{\n public class SettingBindin"
},
{
"path": "DependenciesGui/MainWindow.xaml",
"chars": 11731,
"preview": "<Window x:Name=\"Dependencies\" x:Class=\"Dependencies.MainWindow\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/"
},
{
"path": "DependenciesGui/MainWindow.xaml.cs",
"chars": 12468,
"preview": "using System;\nusing System.IO;\nusing System.Windows;\nusing System.Windows.Input;\nusing System.Windows.Forms;\nusing Syste"
},
{
"path": "DependenciesGui/Models/ModuleInfo.cs",
"chars": 15395,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Windows.Forms;\nusing System.Diagnostics;\nusing System.IO;\nu"
},
{
"path": "DependenciesGui/Models/PeExport.cs",
"chars": 5134,
"preview": "using System;\r\nusing System.Diagnostics;\r\nusing System.Windows;\r\nusing System.Collections.Generic;\r\n\r\nusing Dependencies"
},
{
"path": "DependenciesGui/Models/PeImport.cs",
"chars": 5702,
"preview": "using System;\nusing System.Diagnostics;\nusing System.Windows;\nusing System.Collections.Generic;\n\nusing Dependencies;\nusi"
},
{
"path": "DependenciesGui/ModuleSearchOrder.xaml",
"chars": 2610,
"preview": "<Window x:Class=\"Dependencies.ModuleSearchOrder\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentati"
},
{
"path": "DependenciesGui/ModuleSearchOrder.xaml.cs",
"chars": 1419,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.ComponentModel;\nu"
},
{
"path": "DependenciesGui/Properties/AssemblyInfo.cs",
"chars": 2686,
"preview": "using System.Reflection;\nusing System.Resources;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropSer"
},
{
"path": "DependenciesGui/Properties/Resources.Designer.cs",
"chars": 2950,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// Ce code a é"
},
{
"path": "DependenciesGui/Properties/Resources.resx",
"chars": 5494,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "DependenciesGui/Properties/Settings.Designer.cs",
"chars": 5853,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// Ce code a é"
},
{
"path": "DependenciesGui/Properties/Settings.settings",
"chars": 2001,
"preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
},
{
"path": "DependenciesGui/SearchFolder.xaml",
"chars": 6565,
"preview": "<Window x:Class=\"Dependencies.SearchFolder\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n "
},
{
"path": "DependenciesGui/SearchFolder.xaml.cs",
"chars": 12201,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.I"
},
{
"path": "DependenciesGui/Settings.cs",
"chars": 1412,
"preview": "namespace Dependencies.Properties {\n \n \n // Cette classe vous permet de gérer des événements spécifiques dans "
},
{
"path": "DependenciesGui/Shell32IconExtractor.cs",
"chars": 5886,
"preview": "using System;\nusing System.Windows;\nusing System.Windows.Data;\nusing System.Drawing;\nusing System.Windows.Media.Imaging;"
},
{
"path": "DependenciesGui/UserSettings.xaml",
"chars": 5116,
"preview": "<Window x:Class=\"Dependencies.UserSettings\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n "
},
{
"path": "DependenciesGui/UserSettings.xaml.cs",
"chars": 12435,
"preview": "using System;\nusing System.Windows;\nusing System.Windows.Forms;\nusing System.Collections.Generic;\nusing System.Windows."
},
{
"path": "DependenciesGui/packages.config",
"chars": 134,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"Mono.Cecil\" version=\"0.11.4\" targetFramework=\"net461\" "
},
{
"path": "DependenciesLib/BinaryCache.cs",
"chars": 16723,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Diagnostics;\nusing Dependencies.ClrPh;\nus"
},
{
"path": "DependenciesLib/DependenciesLib.csproj",
"chars": 5155,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbu"
},
{
"path": "DependenciesLib/FindPeModule.cs",
"chars": 8537,
"preview": "using System;\nusing System.IO;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Diagnostics;\n\nusing Dep"
},
{
"path": "DependenciesLib/Properties/AssemblyInfo.cs",
"chars": 1400,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "DependenciesLib/SxsManifest.cs",
"chars": 20388,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Xml;\nusing System.Xml.Linq;\nusing System.IO;\nusing System.T"
},
{
"path": "Deploy-Dependencies.ps1",
"chars": 7088,
"preview": "function Get-PeviewBinary {\n param(\n [String] $BuildVersion,\n [String] $Hash\n )\n\n Push-Location;\n $PeviewBinar"
},
{
"path": "LICENSE",
"chars": 1063,
"preview": "MIT License\n\nCopyright (c) 2017 lucasg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof "
},
{
"path": "README.md",
"chars": 5826,
"preview": "# Dependencies - An open-source modern Dependency Walker\r\n[;\n"
},
{
"path": "third_party/Dragablz/Dragablz/INewTabHost.cs",
"chars": 215,
"preview": "using System.Windows;\n\nnamespace Dragablz\n{\n public interface INewTabHost<out TElement> where TElement : UIElement\n "
},
{
"path": "third_party/Dragablz/Dragablz/InterTabController.cs",
"chars": 3161,
"preview": "using System.Dynamic;\nusing System.Windows;\n\nnamespace Dragablz\n{\n public class InterTabController : FrameworkElemen"
},
{
"path": "third_party/Dragablz/Dragablz/ItemActionCallbackArgs.cs",
"chars": 1240,
"preview": "using System;\nusing System.Windows;\n\nnamespace Dragablz\n{\n public delegate void ItemActionCallback(ItemActionCallbac"
},
{
"path": "third_party/Dragablz/Dragablz/LocationChangedEventArgs.cs",
"chars": 611,
"preview": "using System;\nusing System.Windows;\n\nnamespace Dragablz\n{\n public class LocationChangedEventArgs : EventArgs\n {\n "
},
{
"path": "third_party/Dragablz/Dragablz/LocationHint.cs",
"chars": 752,
"preview": "namespace Dragablz\n{\n /// <summary>\n /// Specifies where an item should appear when added to tab control, as the h"
},
{
"path": "third_party/Dragablz/Dragablz/MoveItemRequest.cs",
"chars": 710,
"preview": "namespace Dragablz\n{\n public class MoveItemRequest\n {\n private readonly object _item;\n private reado"
},
{
"path": "third_party/Dragablz/Dragablz/NewTabHost.cs",
"chars": 821,
"preview": "using System;\nusing System.Windows;\n\nnamespace Dragablz\n{\n public class NewTabHost<TElement> : INewTabHost<TElement>"
},
{
"path": "third_party/Dragablz/Dragablz/OrderChangedEventArgs.cs",
"chars": 649,
"preview": "using System;\n\nnamespace Dragablz\n{\n public class OrderChangedEventArgs : EventArgs\n {\n private readonly o"
},
{
"path": "third_party/Dragablz/Dragablz/PositionMonitor.cs",
"chars": 963,
"preview": "using System;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Dragablz\n{\n /// <summary>\n /// Consumer"
},
{
"path": "third_party/Dragablz/Dragablz/Properties/AssemblyInfo.cs",
"chars": 2690,
"preview": "using System.Reflection;\nusing System.Resources;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropSer"
},
{
"path": "third_party/Dragablz/Dragablz/Properties/Resources.Designer.cs",
"chars": 2779,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "third_party/Dragablz/Dragablz/Properties/Resources.resx",
"chars": 5494,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "third_party/Dragablz/Dragablz/Properties/Settings.Designer.cs",
"chars": 1063,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "third_party/Dragablz/Dragablz/Properties/Settings.settings",
"chars": 193,
"preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"uri:settings\" CurrentProfile=\"(Default)\">\n <Profiles>\n "
},
{
"path": "third_party/Dragablz/Dragablz/Referenceless/AnonymousDisposable.cs",
"chars": 667,
"preview": "using System;\nusing System.Threading;\n\nnamespace Dragablz.Referenceless\n{\n internal sealed class AnonymousDisposable"
},
{
"path": "third_party/Dragablz/Dragablz/Referenceless/DefaultDisposable.cs",
"chars": 372,
"preview": "using System;\n\nnamespace Dragablz.Referenceless\n{\n internal sealed class DefaultDisposable : IDisposable\n {\n "
},
{
"path": "third_party/Dragablz/Dragablz/Referenceless/Disposable.cs",
"chars": 528,
"preview": "using System;\n\nnamespace Dragablz.Referenceless\n{\n internal static class Disposable\n {\n public static IDis"
},
{
"path": "third_party/Dragablz/Dragablz/Referenceless/ICancelable.cs",
"chars": 147,
"preview": "using System;\n\nnamespace Dragablz.Referenceless\n{\n internal interface ICancelable : IDisposable\n {\n bool I"
},
{
"path": "third_party/Dragablz/Dragablz/Referenceless/SerialDisposable.cs",
"chars": 2419,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "third_party/Dragablz/Dragablz/StackOrganiser.cs",
"chars": 12385,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;"
},
{
"path": "third_party/Dragablz/Dragablz/StackPositionMonitor.cs",
"chars": 1465,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Controls;\n\nnamespace Dragablz\n{"
},
{
"path": "third_party/Dragablz/Dragablz/StoryboardCompletionListener.cs",
"chars": 1421,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Windows.Media.Animation;\n\nnamespa"
},
{
"path": "third_party/Dragablz/Dragablz/TabEmptiedResponse.cs",
"chars": 412,
"preview": "namespace Dragablz\n{\n public enum TabEmptiedResponse\n {\n /// <summary>\n /// Allow the Window to be c"
},
{
"path": "third_party/Dragablz/Dragablz/TabablzControl.cs",
"chars": 72246,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Collections.Specialized;\nusing S"
},
{
"path": "third_party/Dragablz/Dragablz/TabablzHeaderSizeConverter.cs",
"chars": 1889,
"preview": "using System;\nusing System.Globalization;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing "
},
{
"path": "third_party/Dragablz/Dragablz/TabablzItemStyleSelector.cs",
"chars": 855,
"preview": "using System.Windows;\nusing System.Windows.Controls;\n\nnamespace Dragablz\n{\n /// <summary>\n /// Selects style to a"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/BrushToRadialGradientBrushConverter.cs",
"chars": 945,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows;\nusing System.Windows.Data;\nusing System.Windows.Media;\n"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/Dockablz.xaml",
"chars": 329,
"preview": "<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:x=\"http"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/Generic.xaml",
"chars": 145293,
"preview": "<ResourceDictionary\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:x=\"http://schemas.mi"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/MahApps.xaml",
"chars": 32376,
"preview": "<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:x=\"http"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/MaterialDesign.xaml",
"chars": 60731,
"preview": "<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:x=\"http"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/MaterialDesignAssist.cs",
"chars": 1331,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/Ripple.cs",
"chars": 8694,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/RippleAssist.cs",
"chars": 2841,
"preview": "using System.Windows;\n\nnamespace Dragablz.Themes\n{\n public static class RippleAssist\n {\n #region ClipToBou"
},
{
"path": "third_party/Dragablz/Dragablz/Themes/SystemCommandIcon.cs",
"chars": 1027,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing Syste"
},
{
"path": "third_party/Dragablz/Dragablz/Trapezoid.cs",
"chars": 6775,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "third_party/Dragablz/Dragablz/VerticalOrganiser.cs",
"chars": 203,
"preview": "using System.Windows.Controls;\n\nnamespace Dragablz\n{\n public class VerticalOrganiser : StackOrganiser\n {\n "
},
{
"path": "third_party/Dragablz/Dragablz/VerticalPositionMonitor.cs",
"chars": 221,
"preview": "using System.Windows.Controls;\n\nnamespace Dragablz\n{\n public class VerticalPositionMonitor : StackPositionMonitor\n "
},
{
"path": "third_party/Get-ProcessHackerSources.ps1",
"chars": 1475,
"preview": "<#\n.SYNOPSIS\nRetrieve ProcessHacker source code and apply a patch for CLR compilation\n\n.DESCRIPTION\nDependencies relies "
},
{
"path": "third_party/Ph-d7342929f1426e597b95e0c20a9b9651d406f410-__acrt_fp_format-bug-and-specify-CLR-compilation.patch",
"chars": 25544,
"preview": "From 2113c249617e4649a5fe42e77ba695db652f0cb6 Mon Sep 17 00:00:00 2001\nFrom: lucasg <lucas.georges@outlook.com>\nDate: Sa"
},
{
"path": "third_party/Ph-dc6a8a94f7e4b381090b46eb8e1b9fd7de052dbe-__acrt_fp_format-bug-and-specify-CLR-compilation.patch",
"chars": 19434,
"preview": "From 530569dbacff0ac42516d64719b983ba04503919 Mon Sep 17 00:00:00 2001\nFrom: lucasg <lucas.georges@outlook.com>\nDate: Sa"
},
{
"path": "third_party/demumble/CMakeLists.txt",
"chars": 1310,
"preview": "cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)\nproject(demumble C CXX)\nadd_definitions(-D_LIBCXXABI_FUNC_VIS=)\n\n# TOD"
},
{
"path": "third_party/demumble/LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2010\n "
},
{
"path": "third_party/demumble/README.md",
"chars": 2543,
"preview": "# demumble\n\n`demumble` demangles both POSIX and Visual Studio symbols. It runs on both\nPOSIX and Windows.\n\n $ ./demum"
},
{
"path": "third_party/demumble/RELEASING",
"chars": 697,
"preview": "Push new release branch:\n1. Make sure branches 'master' and 'release' are synced up locally\n2. update src/demumble.cc wi"
},
{
"path": "third_party/demumble/demumble.vcxproj",
"chars": 11309,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
},
{
"path": "third_party/demumble/demumble.vcxproj.filters",
"chars": 1069,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "third_party/demumble/third_party/libcxxabi/LICENSE.txt",
"chars": 2752,
"preview": "http://libcxxabi.llvm.org/\nAll of the code in libc++abi is dual licensed under the MIT license and the\nUIUC License (a B"
}
]
// ... and 210 more files (download for full content)
About this extraction
This page contains the full source code of the lucasg/Dependencies GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 410 files (4.6 MB), approximately 1.2M tokens, and a symbol index with 4271 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.