├── .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 | 
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 |
--------------------------------------------------------------------------------