Geoff Chappell - Software Analyst
IID_ITravelLogClient | {3050F67A-98B5-11CF-BB82-00AA00BDCE0B} | before Windows Vista |
{241C033E-E659-43DA-AA4D-4086DBC4758D} | Windows Vista and higher |
The ITravelLogClient methods are (as ordered in the virtual function table after the IUnknown methods):
Offset | Method |
---|---|
0x0C | FindWindowByIndex |
0x10 | GetWindowData |
0x14 | LoadHistoryPosition |
with prototypes:
HRESULT FindWindowByIndex (DWORD, IUnknown **);
HRESULT GetWindowData (IStream *, WINDOWDATA *);
HRESULT LoadHistoryPosition (PWSTR, DWORD);
except that one method has one less argument in the interface’s old form:
HRESULT GetWindowData (WINDOWDATA *);
The ITravelLogClient interface is implemented in SHDOCVW version 5.50 and higher. Starting with Windows Vista, it is also implemented in IEFRAME and SHELL32.
Note that the interface exists in two forms, with different IIDs. The only method affected is GetWindowData. All SHDOCVW versions before Windows Vista implement the early form, in which GetWindowData does not receive the address of an IStream. The Windows Vista implementations, whether in IEFRAME, SHDOCVW or SHELL32 are all of the new form, in which GetWindowData has an extra argument.
Though this interface dates from as long ago as 2000, it was still not documented by Microsoft as late as the January 2004 edition of the MSDN Library on CD.
That said, the interface was not completely undocumented. As often for interfaces, the corresponding IID symbol is defined in the UUID.LIB library, even though it is not declared in any header—at least, not any that Microsoft distributes with the SDK.
Moreover, the interface has got documented since, certainly in the SDK dated January 2007 in time for Windows Vista. The minimum availability is said to be Internet Explorer 7 and the minimum operating system is said to be Windows XP SP2, neither of which even hints at this interface’s much longer history.