Geoff Chappell - Software Analyst
HRESULT CoInternetIsFeatureEnabled ( INTERNETFEATURELIST FeatureEntry, DWORD dwFlags);
The FeatureEntry argument tells which feature to test. The supported Internet Features are listed separately.
The dwFlags argument tells in which context to evaluate the feature. The supported Feature Enabled Flags are listed separately.
The function returns S_OK if the feature is enabled, S_FALSE if the feature is disabled, else an error code.
Features are cached per-process and per-thread. If the feature cache is not already initialised for the current process, this function initialises it. Initial states for all supported features are loaded from the registry or are defaulted.
It is an error (E_FAIL) to provide a FeatureEntry that is out of range.
If dwFlags is unsupported, the function returns the Internet Explorer default for the feature.
If dwFlags is GET_FEATURE_FROM_PROCESS, the function obtains the given feature’s per-process state for the current process.
If dwFlags is GET_FEATURE_FROM_THREAD, the function obtains the given feature’s per-thread state for the current thread.
Along with a per-thread state for each feature, URLMON also maintains a per-zone state for all features. If dwFlags is any of the values in the following list, then FeatureEntry is irrelevant:
Each of these values corresponds to an Internet security zone (in decreasing order of trustworthiness). The function obtains the zone’s state for the current thread.
The present coding does not provide explicitly for initialising the per-thread states for a process’s first thread. If a process’s first call to this function or CoInternetSetFeatureEnabled is made by any thread other than the first, then the per-thread states can never be initialised for the first thread. It happens that this case can never occur. URLMON itself calls this function during process attachment, to query FEATURE_UNC_SAVEDFILECHECK. But do Microsoft’s programmers really intend that the per-thread states for the first thread should depend on something that looks so incidental?
The CoInternetIsFeatureEnabled function is exported by name from URLMON.DLL in the version 6.00 from Windows XP SP2, and higher.