The short answer is that it is not an error and the message should be a WARNING.
I looked at the latest, internal code base it has already been changed to a WARNING.
if (!DeviceIoControl (volume,
NULL) || sizeof (m_diskCacheInfo) != dwBytes)
Logger(TYPE_WARN, _T(__FILE__), __LINE__, _T(__FUNCTION__), HRESULT_FROM_WIN32 (GetLastError()),
_T("Unable to get disk cache info for %s"), mountPoint);
The only place the returned value is used in the code is to display the possible cache settings in the SQLIOSim log.
Logger(TYPE_INFO, _T(__FILE__), __LINE__, _T(__FUNCTION__), 0,
_T("DRIVE LEVEL: ")
_T("Read cache enabled = %ls, ")
_T("Write cache enabled = %ls"),
m_diskCacheInfo.ReadCacheEnabled ? L"Yes" : L"No",
m_diskCacheInfo.WriteCacheEnabled ? L"Yes" : L"No");
The SQLIOSim testing attempt will continue without any impact of this error/warning.
Bob Dorr - Principal SQL Server Escalation Engineer