LAufwerk auf bereitschaft prüfen



  • Hi Leute.

    Hab folgenden COde erstellt um die Bereitschaft eines Laufwerkes zu überprüfen:

    BOOL IsDriveReady(UINT uDrive)
    {
        TCHAR szRootPathName[32];
        UINT uErrorMode;
        BOOL bRet;
    
        PathBuildRoot(szRootPathName, uDrive);
    
        uErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
        bRet = GetVolumeInformation(szRootPathName, NULL, 0, NULL, NULL, NULL, NULL, 0);
        SetErrorMode(uErrorMode);
    	return(bRet);
    }
    
    void CMSPDlg::OnButton1()
    {
    	// TODO: Add your control notification handler code here
    // uDrive:
    // 0 - A:\
    // 1 - B:\
    // 2 - C:\
    // usw.
    
    	IsDriveReady(2);
    
    }
    

    Also wenn auf Button1 geklickt wird soll Laufwerk C: geprüft werden.
    Beim compillen bekomm ich aber folgende 2 Fehler:

    MSPDlg.obj : error LNK2001: unresolved external symbol __imp__PathBuildRootA@8
    Debug/MSP.exe : fatal error LNK1120: 1 unresolved externals

    Was sind das für Fehler und was haben die zu bedeuten?

    mfg
    Pro



  • Servus,

    #include "shlwapi.h"
    

    das vergessen? MSDN -> PathBuildRoot() -> Function Information

    MSDN schrieb:

    Function Information

    Minimum DLL Version - shlwapi.dll version 4.71 or later
    Custom Implementation - No
    Header - shlwapi.h
    Import library - shlwapi.lib
    Minimum operating systems - Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0

    *winke*
    Hellsgore



  • ALso die shlwapi.h wars nich!

    Hab die LIB Vergessen!! -->

    #pragma comment(lib, "shlwapi.lib")
    

    Jetzt klappt mein Code ganz gut. DANKE!

    BOOL IsDriveReady(UINT uDrive)
    {
        TCHAR szRootPathName[32];
        UINT uErrorMode;
        BOOL bRet;
    
        PathBuildRoot(szRootPathName, uDrive);
    
        uErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
        bRet = GetVolumeInformation(szRootPathName, NULL, 0, NULL, NULL, NULL, NULL, 0);
        SetErrorMode(uErrorMode);
    	return(bRet);
    }
    
    void CMSPDlg::OnButton1()
    {
    	// TODO: Add your control notification handler code here
    // uDrive:
    // 0 - A:\
    // 1 - B:\
    // 2 - C:\
    // usw.
    
    	if(IsDriveReady(0) == TRUE)
    	{
    		MessageBox("Laufwerk A: ist bereit!", "Information", MB_ICONINFORMATION | MB_OK);
    	}
    	else
    	{
    		MessageBox("Laufwerk A: ist nicht bereit!", "Information", MB_ICONINFORMATION | MB_OK);
    	}
    
    }
    

    DANKE, mfg
    PRO


Anmelden zum Antworten