The User Interface Global Hook DLLs page allows you to detect and specify global hook DLLs that may not be wanted in the Thread Validator user interface process.
Some third party products such as storage devices and video cards are supplied with software to help integrate the hardware device into the computer desktop environment.
An example is the Iomega® Zip® drive. This uses a global hook via the IMGHOOK.DLL which allows the browse for files and browse for folders interfaces to correctly display all the storage devices on the computer, including the zip drive and any special options for the drive.
Some global (or system) hook DLLs can interfere with the correct operation of Thread Validator when it inserts hooks into the target program, (although the IMGHOOK.DLL mentioned above doesn't).
The settings below allow you to specify and/or detect DLLs that should be treated as global hook DLLs.
Any DLL listed will fail to load into the target program when loaded via LoadLibrary() or LoadLibraryEx().
For situations where the hook DLL is already present in the target program, it can optionally be forcibly unloaded. This may happen if it was loaded before Thread Validator attached to the process.
The default behaviour is not to allow the global hooks to load, but you can change this if necessary:
•Allow all global hooks to load allows all global hook DLLs to load into Thread Validator
•Do not allow any global hooks to load prevent any global hook DLLs from loading (the default)
•Use the list of dlls shown provide per-DLL control over which DLLs load or don't load via the User Interface Global Hook DLLs list
Any global hook DLLs not listed will result in the user being asked for permission to load a DLL via the Global Hook Warning Dialog below.
•Add DLL... browse and select one or more DLLs Open adds the chosen DLLs to the Global Hook DLLs list
Having added a DLL to the list, you can change whether the DLL is allowed to load or not, by double clicking in the second column and changing the value: Load or Don't load.
•Remove removes any selected DLL from the list
•Remove All removes all DLLs from the list
Thread Validator can detect any DLLs in its own process that are not ones it uses itself. Such DLLs are likely to be global hook DLLs:
•Auto Detect automatically detect DLLs which may be global hook DLLs, adding them to the Global Hook DLLs list
When the global hook loading rule above is set to Use the list of dlls shown, the Allow load column controls whether the hook DLL is loaded.
When a global hook is loaded that is not on the list of known global hooks, the user is presented with a warning dialog like that shown below.
The user can then accept or block the global hook from loading. The dialog lists a couple of known problematic DLLs.
•Help displays this help page
•Yes lets the DLL load
•No blocks the DLL
Your response is automatically recorded in the Global Hook DLLs list, so that you won't be asked again.
Reset All - Resets all global settings, not just those on the current page.
Reset - Resets the settings on the current page.