By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,524 Members | 1,589 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,524 IT Pros & Developers. It's quick & easy.

Very high memory usage?

P: n/a
I want to be notified when a PnP device is added or removed. To accomplish
this task, I added two occurrences of a
System.Management.ManagementEventWatcher. I've included a snippet of code
that is called when the user pushes a button to start listening. Using the
Windows Task manager I can monitor the CPU usage. When the watchers are
active, the CPU usage spikes to 100%. Turning of the watchers reduces the
CPU usage back to it's quiescent state. Is this expected behavior, or am I
doing something incorrectly? Is there a better way to monitor for PnP
devices being added or removed without incurring this CPU overhead?

TIA

Brad

Code example:
Public Sub StartListen()

Newwatcher = New System.Management.ManagementEventWatcher

Newwatcher.Query = New System.Management.EventQuery("SELECT * FROM
__InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA
'Win32_PnPEntity'")

AddHandler Newwatcher.EventArrived, AddressOf NewPlugPlay

Newwatcher.Start()

Removewatcher = New System.Management.ManagementEventWatcher

Removewatcher.Query = New System.Management.EventQuery("SELECT * FROM
__InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA
'Win32_PnPEntity'")

AddHandler Removewatcher.EventArrived, AddressOf RemovedPlugPlay

Removewatcher.Start()

End Sub
Nov 20 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
Hi Brad,

Based on my understanding, when you enable the ManagementEventWatcher the
CPU will spike to 100%, it will not reduce until you stop the
ManagementEventWatcher .

Based on my test, I can not reproduce the problem.
Here goes my test code.

Dim watcher As System.Management.ManagementEventWatcher
Public Sub NewPlugPlay(ByVal sender As Object, ByVal e As
EventArrivedEventArgs)
MsgBox("New Plug and Play = " +
(CType(e.NewEvent("TargetInstance"), ManagementBaseObject))("Caption"))
End Sub
Public Sub StartListen()
watcher = New System.Management.ManagementEventWatcher
'
' managementEventWatcher1
'
watcher.Query = New System.Management.EventQuery("SELECT * FROM
__InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA
""Win32_PnPEntity""")
AddHandler watcher.EventArrived, AddressOf NewPlugPlay
watcher.Start()
End Sub
Public Sub StopListen()
watcher.Stop()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
StartListen()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
StopListen()
End Sub

Regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

Nov 20 '05 #2

P: n/a
Peter,

I guess that I'll have to live with CPU usage of 100% while monitoring PnP
device activity. I'm curious about the query:

SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA
""Win32_PnPEntity"""

Can you point me to a source that describes how this query, and others like
it, are created? This is not intuitive and I would've struggled without the
MSDN examples.

Thanks

Brad

"Peter Huang" <v-******@online.microsoft.com> wrote in message
news:Eb**************@cpmsftngxa07.phx.gbl...
Hi Brad,

Based on my understanding, when you enable the ManagementEventWatcher the
CPU will spike to 100%, it will not reduce until you stop the
ManagementEventWatcher .

Based on my test, I can not reproduce the problem.
Here goes my test code.

Dim watcher As System.Management.ManagementEventWatcher
Public Sub NewPlugPlay(ByVal sender As Object, ByVal e As
EventArrivedEventArgs)
MsgBox("New Plug and Play = " +
(CType(e.NewEvent("TargetInstance"), ManagementBaseObject))("Caption"))
End Sub
Public Sub StartListen()
watcher = New System.Management.ManagementEventWatcher
'
' managementEventWatcher1
'
watcher.Query = New System.Management.EventQuery("SELECT * FROM
__InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA
""Win32_PnPEntity""")
AddHandler watcher.EventArrived, AddressOf NewPlugPlay
watcher.Start()
End Sub
Public Sub StopListen()
watcher.Stop()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
StartListen()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
StopListen()
End Sub

Regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

Nov 20 '05 #3

P: n/a
Hi Brad,

Thanks for your quickly reply!

Since I can not reproduce the problem, I suggest you try to modify the
query statement as following.
SELECT * FROM __InstanceCreationEvent WITHIN 30 WHERE TargetInstance ISA
""Win32_PnPEntity"""

You may try to increase the query interval (e.g. change 1 to 30 or larger)
to see if the problem persists.

If you wants to understand WMI, I think the document in SDK is good and
necessary.
Windows Management Instrumentation
http://msdn.microsoft.com/library/de...us/wmisdk/wmi/
wmi_start_page.asp
Querying with WQL
http://msdn.microsoft.com/library/de...us/wmisdk/wmi/
querying_with_wql.asp
Best regards,

Perter Huang
Microsoft Online Partner Support

Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.

Nov 20 '05 #4

P: n/a
Peter,

Thanks for the pointer to the documentation. I'll start experimenting with
the query interval.

Brad

"Peter Huang" <v-******@online.microsoft.com> wrote in message
news:ZG*************@cpmsftngxa07.phx.gbl...
Hi Brad,

Thanks for your quickly reply!

Since I can not reproduce the problem, I suggest you try to modify the
query statement as following.
SELECT * FROM __InstanceCreationEvent WITHIN 30 WHERE TargetInstance ISA
""Win32_PnPEntity"""

You may try to increase the query interval (e.g. change 1 to 30 or larger)
to see if the problem persists.

If you wants to understand WMI, I think the document in SDK is good and
necessary.
Windows Management Instrumentation
http://msdn.microsoft.com/library/de...us/wmisdk/wmi/ wmi_start_page.asp
Querying with WQL
http://msdn.microsoft.com/library/de...us/wmisdk/wmi/ querying_with_wql.asp
Best regards,

Perter Huang
Microsoft Online Partner Support

Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.

Nov 20 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.