This interface is implemented in IEFRAME and seems new to Windows Vista. Closer inspection may reveal it or something similar in some other module in an earlier Windows version. The IID is:

IBrowserThreadState {CCD6F2EB-D12A-40C7-8683-509F1C818EAE}

This interface is not completely undocumented. It doesn’t get even a declaration in any Windows SDK header, but the corresponding IID_IBrowserThreadState is defined in the UUID.LIB library.


The IBrowserThreadState methods are:

Offset Method
0x0C QueryDownloadPromptAllowed
0x10 IncrementUserActionID
0x14 GetUserActionID
0x18 GetLastHookTime
0x1C SetParentThreadID
0x20 RegisterHookEvents


The following are known from Microsoft’s symbol file for IEFRAME:

HRESULT QueryDownloadPromptAllowed (ULONG);
HRESULT IncrementUserActionID (VOID);
HRESULT GetUserActionID (ULONG *);
HRESULT GetLastHookTime (HWND, ULONG *);
HRESULT SetParentThreadID (ULONG);
HRESULT RegisterHookEvents (IBrowserHookEvents *, ULONG, ULONG, ULONG);

Of course, the IBrowserHookEvents interface is undocumented also.


The only known implementation is by the BrowserThreadState class, which IEFRAME exposes through its DllGetClassObject function as if for the following IDL declaration:

    uuid (A6B222AB-A5EA-4899-B230-084657EDDC7D)
coclass BrowserThreadState
    [default] interface IBrowserThreadState;

This too is undocumented, though the CLSID_BrowserThreadState symbol is defined in the UUID.LIB library. The only known use is from MSHTML.