DWORD i;\r
BOOL bSuccess;\r
\r
+ OutputDebugString( L"SelectDriver" );\r
\r
// Get a list of drivers.\r
bSuccess =\r
\r
DWORD\r
CreateIbBusRoot(\r
- IN PCTSTR driverPath )\r
+ IN PTSTR driverPath )\r
{\r
HDEVINFO hDevList;\r
BOOL bSuccess;\r
SP_DRVINFO_DATA drvInfo;\r
LONG status;\r
SP_DEVINSTALL_PARAMS installParams;\r
-\r
+ size_t nEnd;\r
+ DWORD gle = 0;\r
\r
memset( &devInfo, 0, sizeof(SP_DEVINFO_DATA) );\r
devInfo.cbSize = sizeof(SP_DEVINFO_DATA);\r
hDevList = SetupDiCreateDeviceInfoList( &GUID_CLASS_SYSTEM, NULL );\r
if( hDevList == INVALID_HANDLE_VALUE )\r
{\r
+ gle = GetLastError();\r
OutputDebugString( TEXT("[IbInstaller]Failed to create dev info list.\n") );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
// Create the device.\r
NULL, DICD_GENERATE_ID, &devInfo );\r
if( !bSuccess )\r
{\r
+ gle = GetLastError();\r
OutputDebugString( TEXT("[IbInstaller]SetupDiCreateDeviceInfo failed.\n") );\r
SetupDiDestroyDeviceInfoList( hDevList );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
// Setup the HW ID for the device.\r
SPDRP_HARDWAREID, (BYTE*)GUID_IB_BUS_HW_ID, sizeof(GUID_IB_BUS_HW_ID) );\r
if( !bSuccess )\r
{\r
+ gle = GetLastError();\r
OutputDebugString(\r
TEXT("[IbInstaller]SetupDiSetDeviceRegistryProperty failed.\n") );\r
SetupDiDestroyDeviceInfoList( hDevList );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
// Setup the install path.\r
ZeroMemory( &installParams, sizeof(installParams) );\r
installParams.cbSize = sizeof(installParams);\r
+\r
+\r
+ OSVERSIONINFO osvi;\r
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);\r
+ bSuccess = GetVersionEx (&osvi);\r
+ if( !bSuccess )\r
+ {\r
+ gle = GetLastError();\r
+ OutputDebugString(\r
+ TEXT("[IbInstaller]GetVersionEx failed.\n") );\r
+ SetupDiDestroyDeviceInfoList( hDevList );\r
+ return gle;\r
+ }\r
+\r
+ // for LH we want to find the correct path\r
+ if (osvi.dwMajorVersion > 5) \r
+ {\r
+ WIN32_FIND_DATA FindFileData;\r
+ HANDLE hFind;\r
+\r
+ // Strip the file name from the path.\r
+ nEnd = _tcslen( driverPath );\r
+ while( driverPath[nEnd] != '\\' ) {\r
+ nEnd--;\r
+ }\r
+ driverPath[nEnd] = _T('\0');\r
+ _tcsncat(driverPath,TEXT("\\ib_bus.inf_*"), MAX_PATH);\r
+\r
+ hFind = FindFirstFile(driverPath, &FindFileData);\r
+ if (hFind == INVALID_HANDLE_VALUE) \r
+ {\r
+ printf ("Invalid File Handle. GetLastError reports %d\n", GetLastError ());\r
+ return ERROR_FILE_NOT_FOUND;\r
+ } \r
+ else \r
+ {\r
+ printf ("The first file found is %s\n", FindFileData.cFileName);\r
+\r
+ // Strip the file name from the path.\r
+ nEnd = _tcslen( driverPath );\r
+ while( driverPath[nEnd] != '\\' ) {\r
+ nEnd--;\r
+ }\r
+ driverPath[nEnd+1] = _T('\0'); \r
+\r
_tcsncpy( installParams.DriverPath, driverPath, MAX_PATH );\r
+ _tcsncat(installParams.DriverPath, FindFileData.cFileName, MAX_PATH);\r
+ FindClose(hFind);\r
+ }\r
+\r
+ } else {\r
+ _tcsncpy( installParams.DriverPath, driverPath, MAX_PATH );\r
+ }\r
+\r
\r
bSuccess =\r
SetupDiSetDeviceInstallParams( hDevList, &devInfo, &installParams );\r
if( !bSuccess )\r
{\r
+ gle = GetLastError();\r
OutputDebugString( TEXT("[IbInstaller]SetupDiSetDeviceInstallParams failed.\n") );\r
SetupDiDestroyDeviceInfoList( hDevList );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
status = SelectDriver( hDevList, &devInfo, &drvInfo );\r
bSuccess = SetupDiSetSelectedDevice( hDevList, &devInfo );\r
if( !bSuccess )\r
{\r
+ gle = GetLastError();\r
OutputDebugString( TEXT("[IbInstaller]SetupDiSetSelectedDevice failed.\n") );\r
SetupDiDestroyDriverInfoList( hDevList, &devInfo, SPDIT_CLASSDRIVER );\r
SetupDiDestroyDeviceInfoList( hDevList );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
// Select the driver.\r
bSuccess = SetupDiSetSelectedDriver( hDevList, &devInfo, &drvInfo );\r
if( !bSuccess )\r
{\r
+ gle = GetLastError();\r
OutputDebugString( TEXT("[IbInstaller]SetupDiSetSelectedDriver failed.\n") );\r
SetupDiDestroyDriverInfoList( hDevList, &devInfo, SPDIT_CLASSDRIVER );\r
SetupDiDestroyDeviceInfoList( hDevList );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
// Register the device (since it is non-PnP).\r
NULL, NULL, NULL );\r
if( !bSuccess )\r
{\r
+ gle = GetLastError();\r
OutputDebugString( TEXT("[IbInstaller]SetupDiRegisterDeviceInfo failed.\n") );\r
SetupDiDestroyDriverInfoList( hDevList, &devInfo, SPDIT_CLASSDRIVER );\r
SetupDiDestroyDeviceInfoList( hDevList );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
// Install the device (copies the files and starts it).\r
bSuccess = SetupDiInstallDevice( hDevList, &devInfo );\r
if( !bSuccess )\r
{\r
+ gle = GetLastError();\r
OutputDebugString( TEXT("[IbInstaller]SetupDiInstallDevice failed.\n") );\r
SetupDiDestroyDriverInfoList( hDevList, &devInfo, SPDIT_CLASSDRIVER );\r
SetupDiDestroyDeviceInfoList( hDevList );\r
- return GetLastError();\r
+ return gle;\r
}\r
\r
return ERROR_SUCCESS;\r
TCHAR *pPath;\r
FILEPATHS *pFileInfo;\r
\r
+ OutputDebugString( L"IbFileCallback" );\r
+\r
UNREFERENCED_PARAMETER( Param2 );\r
\r
if( Notification != SPFILENOTIFY_QUEUESCAN_EX )\r
\r
UNREFERENCED_PARAMETER( Context );\r
\r
+ swprintf( debug_buf ,L"IbCoInstaller called DI_FUNCTION =%d\n", InstallFunction);\r
+ OutputDebugString( debug_buf );\r
+\r
// The file queue is valid on the DIF_INSTALLDEVICE, so trap that\r
// code and extract the install path.\r
if( InstallFunction != DIF_INSTALLDEVICE )\r