├── .gitattributes ├── .vs └── InterruptChecker │ └── v16 │ ├── .suo │ └── Server │ └── sqlite3 │ ├── db.lock │ └── storage.ide ├── InterruptChecker.sln ├── InterruptChecker ├── App.config ├── Form1.Designer.vb ├── Form1.resx ├── Form1.vb ├── InterruptChecker.vbproj ├── My Project │ ├── Application.Designer.vb │ ├── Application.myapp │ ├── AssemblyInfo.vb │ ├── Resources.Designer.vb │ ├── Resources.resx │ ├── Settings.Designer.vb │ └── Settings.settings └── app.manifest └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.vs/InterruptChecker/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheMelody/interrupt-checker/885b5f92339217b2216c56180cbb9fb307d0b4a3/.vs/InterruptChecker/v16/.suo -------------------------------------------------------------------------------- /.vs/InterruptChecker/v16/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheMelody/interrupt-checker/885b5f92339217b2216c56180cbb9fb307d0b4a3/.vs/InterruptChecker/v16/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /.vs/InterruptChecker/v16/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheMelody/interrupt-checker/885b5f92339217b2216c56180cbb9fb307d0b4a3/.vs/InterruptChecker/v16/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /InterruptChecker.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29424.173 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "InterruptChecker", "InterruptChecker\InterruptChecker.vbproj", "{3AADE342-5CF1-4960-BF8E-4CC21E295752}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {3AADE342-5CF1-4960-BF8E-4CC21E295752}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {3AADE342-5CF1-4960-BF8E-4CC21E295752}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {3AADE342-5CF1-4960-BF8E-4CC21E295752}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {3AADE342-5CF1-4960-BF8E-4CC21E295752}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {939B2E50-B90E-4139-ACB0-D977B4FDBEBC} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /InterruptChecker/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /InterruptChecker/Form1.Designer.vb: -------------------------------------------------------------------------------- 1 |  _ 2 | Partial Class Form1 3 | Inherits System.Windows.Forms.Form 4 | 5 | 'Form esegue l'override del metodo Dispose per pulire l'elenco dei componenti. 6 | _ 7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 8 | Try 9 | If disposing AndAlso components IsNot Nothing Then 10 | components.Dispose() 11 | End If 12 | Finally 13 | MyBase.Dispose(disposing) 14 | End Try 15 | End Sub 16 | 17 | 'Richiesto da Progettazione Windows Form 18 | Private components As System.ComponentModel.IContainer 19 | 20 | 'NOTA: la procedura che segue è richiesta da Progettazione Windows Form 21 | 'Può essere modificata in Progettazione Windows Form. 22 | 'Non modificarla mediante l'editor del codice. 23 | _ 24 | Private Sub InitializeComponent() 25 | Me.ListView1 = New System.Windows.Forms.ListView() 26 | Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) 27 | Me.ColumnHeader3 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) 28 | Me.SuspendLayout() 29 | ' 30 | 'ListView1 31 | ' 32 | Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader3}) 33 | Me.ListView1.Dock = System.Windows.Forms.DockStyle.Fill 34 | Me.ListView1.HideSelection = False 35 | Me.ListView1.Location = New System.Drawing.Point(0, 0) 36 | Me.ListView1.Name = "ListView1" 37 | Me.ListView1.Size = New System.Drawing.Size(624, 441) 38 | Me.ListView1.TabIndex = 0 39 | Me.ListView1.UseCompatibleStateImageBehavior = False 40 | Me.ListView1.View = System.Windows.Forms.View.Details 41 | ' 42 | 'ColumnHeader1 43 | ' 44 | Me.ColumnHeader1.Text = "Device" 45 | Me.ColumnHeader1.Width = 155 46 | ' 47 | 'ColumnHeader3 48 | ' 49 | Me.ColumnHeader3.Text = "Current" 50 | Me.ColumnHeader3.Width = 204 51 | ' 52 | 'Form1 53 | ' 54 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 55 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 56 | Me.ClientSize = New System.Drawing.Size(624, 441) 57 | Me.Controls.Add(Me.ListView1) 58 | Me.MinimumSize = New System.Drawing.Size(640, 480) 59 | Me.Name = "Form1" 60 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen 61 | Me.Text = "Melody's Interrupts Assignment Checker" 62 | Me.ResumeLayout(False) 63 | 64 | End Sub 65 | 66 | Friend WithEvents ListView1 As ListView 67 | Friend WithEvents ColumnHeader1 As ColumnHeader 68 | Friend WithEvents ColumnHeader3 As ColumnHeader 69 | End Class 70 | -------------------------------------------------------------------------------- /InterruptChecker/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /InterruptChecker/Form1.vb: -------------------------------------------------------------------------------- 1 | Public Class Form1 2 | 3 | Function GetCores(ByVal TargetSet As UInteger) As String 4 | Dim CoreNumber As UInteger = 0 5 | Dim str As String = "(invalid assignment)" 6 | Dim ds = False 7 | Dim TS As UInteger = TargetSet 8 | While TS > 0 9 | If TS Mod 2 = 1 Then 10 | If Not ds Then 11 | str = "core" & CoreNumber 12 | ds = True 13 | Else 14 | str &= ", core" & CoreNumber 15 | End If 16 | End If 17 | TS = TS \ 2 18 | CoreNumber = CoreNumber + 1 19 | End While 20 | Return str 21 | End Function 22 | 23 | Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 24 | Dim enum_key = My.Computer.Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Enum") 25 | For Each category In enum_key.GetSubKeyNames() 26 | Dim category_key = enum_key.OpenSubKey(category) 27 | For Each device In category_key.GetSubKeyNames() 28 | Dim device_key = category_key.OpenSubKey(device) 29 | For Each instance In device_key.GetSubKeyNames() 30 | Dim instance_key = device_key.OpenSubKey(instance) 31 | If Not instance_key.GetSubKeyNames().Contains("Device Parameters") Then 32 | Continue For 33 | End If 34 | Dim parameters_key = instance_key.OpenSubKey("Device Parameters") 35 | If Not parameters_key.GetSubKeyNames().Contains("Interrupt Management") Then 36 | Continue For 37 | End If 38 | Dim interrupt_management_key = parameters_key.OpenSubKey("Interrupt Management") 39 | If Not interrupt_management_key.GetSubKeyNames().Contains("Affinity Policy - Temporal") Then 40 | Continue For 41 | End If 42 | Dim temporal_key = interrupt_management_key.OpenSubKey("Affinity Policy - Temporal") 43 | If Not temporal_key.GetValueNames().Contains("TargetSet") Then 44 | Continue For 45 | End If 46 | Dim TargetSet As UInteger = temporal_key.GetValue("TargetSet") 47 | Dim DeviceDesc As String = instance_key.GetValue("DeviceDesc") 48 | If DeviceDesc.Contains(";") Then 49 | DeviceDesc = DeviceDesc.Split(";")(1) 50 | End If 51 | Dim Cores = GetCores(TargetSet) 52 | Dim item = New ListViewItem({DeviceDesc, Cores}) 53 | ListView1.Items.Add(item) 54 | 55 | Next 56 | Next 57 | Next 58 | ListView1.Columns(0).AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent) 59 | ListView1.Columns(1).AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent) 60 | End Sub 61 | End Class 62 | -------------------------------------------------------------------------------- /InterruptChecker/InterruptChecker.vbproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {3AADE342-5CF1-4960-BF8E-4CC21E295752} 8 | WinExe 9 | InterruptChecker.My.MyApplication 10 | InterruptChecker 11 | InterruptChecker 12 | 512 13 | WindowsForms 14 | v4.7.2 15 | true 16 | true 17 | 18 | 19 | AnyCPU 20 | true 21 | full 22 | true 23 | true 24 | bin\Debug\ 25 | InterruptChecker.xml 26 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | false 32 | true 33 | true 34 | bin\Release\ 35 | InterruptChecker.xml 36 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 37 | 38 | 39 | On 40 | 41 | 42 | Binary 43 | 44 | 45 | Off 46 | 47 | 48 | On 49 | 50 | 51 | app.manifest 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | Form 81 | 82 | 83 | Form1.vb 84 | Form 85 | 86 | 87 | 88 | True 89 | Application.myapp 90 | 91 | 92 | True 93 | True 94 | Resources.resx 95 | 96 | 97 | True 98 | Settings.settings 99 | True 100 | 101 | 102 | 103 | 104 | Form1.vb 105 | 106 | 107 | VbMyResourcesResXFileCodeGenerator 108 | Resources.Designer.vb 109 | My.Resources 110 | Designer 111 | 112 | 113 | 114 | 115 | 116 | MyApplicationCodeGenerator 117 | Application.Designer.vb 118 | 119 | 120 | SettingsSingleFileGenerator 121 | My 122 | Settings.Designer.vb 123 | 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /InterruptChecker/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' Il codice è stato generato da uno strumento. 4 | ' Versione runtime:4.0.30319.42000 5 | ' 6 | ' Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se 7 | ' il codice viene rigenerato. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | 'NOTA: questo file è generato automaticamente e non può essere modificato direttamente. Per apportare modifiche 18 | ' o se vengono rilevati errori di compilazione nel file, passare a Creazione progetti 19 | ' (aprire le proprietà del progetto o fare doppio clic sul nodo Progetti personali in 20 | ' Esplora soluzioni) e apportare le modifiche nella scheda Applicazione. 21 | ' 22 | Partial Friend Class MyApplication 23 | 24 | _ 25 | Public Sub New() 26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) 27 | Me.IsSingleInstance = true 28 | Me.EnableVisualStyles = true 29 | Me.SaveMySettingsOnExit = false 30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses 31 | End Sub 32 | 33 | _ 34 | Protected Overrides Sub OnCreateMainForm() 35 | Me.MainForm = Global.InterruptChecker.Form1 36 | End Sub 37 | End Class 38 | End Namespace 39 | -------------------------------------------------------------------------------- /InterruptChecker/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 |  2 | 3 | true 4 | Form1 5 | true 6 | 0 7 | true 8 | 0 9 | false 10 | -------------------------------------------------------------------------------- /InterruptChecker/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' Le informazioni generali relative a un assembly sono controllate dal seguente 6 | ' set di attributi. Modificare i valori di questi attributi per modificare le informazioni 7 | ' associate a un assembly. 8 | 9 | ' Controllare i valori degli attributi degli assembly 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'Se il progetto viene esposto a COM, il GUID seguente verrà usato come ID del typelib 21 | 22 | 23 | ' Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori: 24 | ' 25 | ' Versione principale 26 | ' Versione secondaria 27 | ' Numero di build 28 | ' Revisione 29 | ' 30 | ' È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build 31 | ' usando l'asterisco '*' come illustrato di seguito: 32 | ' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /InterruptChecker/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My.Resources 16 | 17 | 'This class was auto-generated by the StronglyTypedResourceBuilder 18 | 'class via a tool like ResGen or Visual Studio. 19 | 'To add or remove a member, edit your .ResX file then rerun ResGen 20 | 'with the /str option, or rebuild your VS project. 21 | ''' 22 | ''' A strongly-typed resource class, for looking up localized strings, etc. 23 | ''' 24 | _ 28 | Friend Module Resources 29 | 30 | Private resourceMan As Global.System.Resources.ResourceManager 31 | 32 | Private resourceCulture As Global.System.Globalization.CultureInfo 33 | 34 | ''' 35 | ''' Returns the cached ResourceManager instance used by this class. 36 | ''' 37 | _ 38 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 39 | Get 40 | If Object.ReferenceEquals(resourceMan, Nothing) Then 41 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("InterruptChecker.Resources", GetType(Resources).Assembly) 42 | resourceMan = temp 43 | End If 44 | Return resourceMan 45 | End Get 46 | End Property 47 | 48 | ''' 49 | ''' Overrides the current thread's CurrentUICulture property for all 50 | ''' resource lookups using this strongly typed resource class. 51 | ''' 52 | _ 53 | Friend Property Culture() As Global.System.Globalization.CultureInfo 54 | Get 55 | Return resourceCulture 56 | End Get 57 | Set(ByVal value As Global.System.Globalization.CultureInfo) 58 | resourceCulture = value 59 | End Set 60 | End Property 61 | End Module 62 | End Namespace 63 | -------------------------------------------------------------------------------- /InterruptChecker/My Project/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /InterruptChecker/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.InterruptChecker.My.MySettings 68 | Get 69 | Return Global.InterruptChecker.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /InterruptChecker/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /InterruptChecker/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 59 | 60 | 61 | 62 | 63 | 64 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Melody's Interrupt Affinity Checker 2 | This program reads your devices' Interrupt Affinities according to Windows by interpreting their temporal affinity policies. 3 | 4 | ![screenshot](https://github.com/SheMelody/interrupt-checker/assets/20774468/4a8c0cfe-3b51-4239-a7b5-1724150475c4) 5 | 6 | ### Important note: Whatever Windows thinks and reports may not necessarily be the truth, so keep that in mind when using my program. 7 | 8 | Join our Discord here: http://discord.gg/6TMHU63 9 | --------------------------------------------------------------------------------