Label click in ListView triggers audio DLL:s?
-
Hi all, When I click in a label in my (heavily subclassed) ListView, I get the following DLL:s loaded:
Loaded 'C:\WINDOWS\SYSTEM32\winmm.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\fireface_mme.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\setupapi.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wintrust.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\crypt32.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\msasn1.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\imagehlp.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\EMGA8U2K.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\version.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\MSACM32.DRV', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\msacm32.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\midimap.dll', no matching symbolic information found.
The loading of the libraries takes about 1 sec, which is not acceptable. The app does not use any multimedia features, and is not based on MFC or any other framwork (pure Win32 API calls). I have done some research, but is now totally at a loss. Any suggestions will be appreciated! Thanks! PS. Fireface800 is my audio I/O unit, a beautiful piece of hardware if you ask me :-) -
Hi all, When I click in a label in my (heavily subclassed) ListView, I get the following DLL:s loaded:
Loaded 'C:\WINDOWS\SYSTEM32\winmm.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\fireface_mme.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\setupapi.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wintrust.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\crypt32.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\msasn1.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\imagehlp.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\EMGA8U2K.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\version.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\MSACM32.DRV', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\msacm32.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\midimap.dll', no matching symbolic information found.
The loading of the libraries takes about 1 sec, which is not acceptable. The app does not use any multimedia features, and is not based on MFC or any other framwork (pure Win32 API calls). I have done some research, but is now totally at a loss. Any suggestions will be appreciated! Thanks! PS. Fireface800 is my audio I/O unit, a beautiful piece of hardware if you ask me :-)I would put a breakpoint inside
LoadLibraryW
(and friends) and try to get a call stack of the code which loads "winmm.dll". Steve -
I would put a breakpoint inside
LoadLibraryW
(and friends) and try to get a call stack of the code which loads "winmm.dll". SteveGood idea. Tried it, but the call stack doesn't tell me that much:
KERNEL32! 7c80acd3() COMCTL32! 5d0f0541() COMCTL32! 5d0f08a0() COMCTL32! 5d097aae() USER32! 77d48709() USER32! 77d487eb() USER32! 77d4c00e() USER32! 77d4c034() esListVw::OnMessage
The bottom one is my own code, callingCallWindowProc(...)
in response to aWM_LBUTTONDOWN
. :confused: I think this is spooky. I would feel more comfortable if the app just crashed ... Btw, tried to remove all custom stuff from the control (subclassing and responding to WM_NOTIFY's), but the multimedia DLL's get loaded anyway at first click (left or right mouse button doesn't matter, same behaviour if tabbing to the label). Any idea on how to move forward? I'm stuck. Thanks -
Good idea. Tried it, but the call stack doesn't tell me that much:
KERNEL32! 7c80acd3() COMCTL32! 5d0f0541() COMCTL32! 5d0f08a0() COMCTL32! 5d097aae() USER32! 77d48709() USER32! 77d487eb() USER32! 77d4c00e() USER32! 77d4c034() esListVw::OnMessage
The bottom one is my own code, callingCallWindowProc(...)
in response to aWM_LBUTTONDOWN
. :confused: I think this is spooky. I would feel more comfortable if the app just crashed ... Btw, tried to remove all custom stuff from the control (subclassing and responding to WM_NOTIFY's), but the multimedia DLL's get loaded anyway at first click (left or right mouse button doesn't matter, same behaviour if tabbing to the label). Any idea on how to move forward? I'm stuck. ThanksDon't use MSVC6 to get the stack. Use WinDBG. You can get it from here[^]. Configure the symbol path (in the "File" menu) with this string: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols You will need an internet connection. This will cause WinDBG to download symbols as needed from Microsoft and store them on your machine at "C:\Symbols". With these symbols you will get a more meaningful stack trace. You can issue the "kvn 1000" command to get a stack trace to send. Steve
-
Hi all, When I click in a label in my (heavily subclassed) ListView, I get the following DLL:s loaded:
Loaded 'C:\WINDOWS\SYSTEM32\winmm.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\fireface_mme.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\setupapi.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wintrust.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\crypt32.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\msasn1.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\imagehlp.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\EMGA8U2K.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\version.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\wdmaud.drv', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\MSACM32.DRV', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\msacm32.dll', no matching symbolic information found. Loaded 'C:\WINDOWS\SYSTEM32\midimap.dll', no matching symbolic information found.
The loading of the libraries takes about 1 sec, which is not acceptable. The app does not use any multimedia features, and is not based on MFC or any other framwork (pure Win32 API calls). I have done some research, but is now totally at a loss. Any suggestions will be appreciated! Thanks! PS. Fireface800 is my audio I/O unit, a beautiful piece of hardware if you ask me :-)Does it do this when your program is *not* under the control of a debugger? There could be additional DLLs loaded when you are debugging. Some part of your program is loading those DLLs. Maybe a 3rd-party system-wide hook has injected into your program? See what 3rd-party DLLs are in your address-space by listing all DLLs in your program (do a 'Module List' in VS when debugging). I would also use DependencyWalker[^] to see what your program's dependencies are. James
http://www.catch22.net -
Don't use MSVC6 to get the stack. Use WinDBG. You can get it from here[^]. Configure the symbol path (in the "File" menu) with this string: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols You will need an internet connection. This will cause WinDBG to download symbols as needed from Microsoft and store them on your machine at "C:\Symbols". With these symbols you will get a more meaningful stack trace. You can issue the "kvn 1000" command to get a stack trace to send. Steve
Hehe, was hoping for that magical non-documentet extended style LVS_EX_NOAUDIO :-) The call stack looks like this:
LoadLibraryW CCPlaySound ListView_HandleMouse ListView_OnButtonDown ListView_WndProc InternalCallWinProc UserCallWinProcCheckWow CallWindowProcAorW CallWindowProcW esGridCtrl
Any ideas? Have been using quite a few list views over the years, but this is a total mystery to me. [Have been away a few days, hoping thread is not dead] -
Does it do this when your program is *not* under the control of a debugger? There could be additional DLLs loaded when you are debugging. Some part of your program is loading those DLLs. Maybe a 3rd-party system-wide hook has injected into your program? See what 3rd-party DLLs are in your address-space by listing all DLLs in your program (do a 'Module List' in VS when debugging). I would also use DependencyWalker[^] to see what your program's dependencies are. James
http://www.catch22.net -
Hehe, was hoping for that magical non-documentet extended style LVS_EX_NOAUDIO :-) The call stack looks like this:
LoadLibraryW CCPlaySound ListView_HandleMouse ListView_OnButtonDown ListView_WndProc InternalCallWinProc UserCallWinProcCheckWow CallWindowProcAorW CallWindowProcW esGridCtrl
Any ideas? Have been using quite a few list views over the years, but this is a total mystery to me. [Have been away a few days, hoping thread is not dead]Can you send more info. i.e. The total info when you enter "kvn 1000" in WinDBG. For examaple where in
ListView_HandleMouse
didCCPlaySound
get called. Also if you issue the "lmv" the results would be useful. Steve -
Can you send more info. i.e. The total info when you enter "kvn 1000" in WinDBG. For examaple where in
ListView_HandleMouse
didCCPlaySound
get called. Also if you issue the "lmv" the results would be useful. SteveOk, really nice of you to walk me through this. Sorry about late reply, have to do some "real" work as well:-)
0:000> kvn 1000 # ChildEBP RetAddr Args to Child 00 0012f408 5d0c3011 5d0c3070 00000000 00000000 kernel32!LoadLibraryW (FPO: [Non-Fpo]) 01 0012f890 5d0f0541 5d0bd028 001e0020 00145690 COMCTL32!CCPlaySound+0xaf (FPO: [Non-Fpo]) 02 0012f904 5d0f08a0 0003056e 00000000 00000020 COMCTL32!ListView_HandleMouse+0x24d (FPO: [Non-Fpo]) 03 0012f924 5d097aae 00145690 00000000 00000020 COMCTL32!ListView_OnButtonDown+0x1b (FPO: [Non-Fpo]) 04 0012faa4 77d48709 0003056e 00000201 00000001 COMCTL32!ListView_WndProc+0x70c (FPO: [Non-Fpo]) 05 0012fad0 77d487eb 5d09637c 0003056e 00000201 USER32!InternalCallWinProc+0x28 06 0012fb38 77d4c00e 00000000 5d09637c 0003056e USER32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo]) 07 0012fb68 77d4c034 5d09637c 0003056e 00000201 USER32!CallWindowProcAorW+0x98 (FPO: [Non-Fpo]) 08 0012fb88 004039dd 5d09637c 0003056e 00000201 USER32!CallWindowProcW+0x1b (FPO: [Non-Fpo])
the lvm output can be found here: http://www.esaro.se/lvmoutput.txt Nothing suspicious as far as I can tell, however, my experience with WinDbg is somewhat limited ... /M