Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Hard disc
Message
From
30/03/2001 07:53:50
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
30/03/2001 07:18:23
General information
Forum:
Visual FoxPro
Category:
Other
Title:
Miscellaneous
Thread ID:
00490204
Message ID:
00490268
Views:
10
>no i want to know what is the name of drive where hard disk is there.
>
>thanks
>mohammed

Mohammed,
I'm afraid I couldn't understand. Volume name ? Boot drive ? What drives exist and types ?
Maybe below code helps (also FileSystemObject provides an easy way to deal with it) :
Dimension aKnownDrives[1]
lnDrives = GetDriveStrings(@aKnownDrives)
If lnDrives > 0
    Dimension aDriveInfo[3]
    For ix = 1 to lnDrives
        =GetVolInfo( aKnownDrives[ix], @aDriveInfo )
        ? "Drive : [" ;
            + aKnownDrives[ix] ;
            + "] Type : [" ;
            + cDriveType(aKnownDrives[ix]) ;
            + "]  Volume Name : [" ;
            + aDriveInfo[1] ;
            + "]  Sytem : [" ;
            + aDriveInfo[2] ;
            + "]  Serial No : [" ;
            + aDriveInfo[3] +"]"
    Endfor
Endif

Function cDriveType
    Lparameters tcRoot && Root of drive ie: "c:\"
    Local array aDrvTypes[7]
    aDrvTypes[1]="CANNOT_DETERMINE"
    aDrvTypes[2]="INVALID_DRIVE"
    aDrvTypes[3]="DRIVE_REMOVABLE"
    aDrvTypes[4]="DRIVE_FIXED"
    aDrvTypes[5]="DRIVE_REMOTE"
    aDrvTypes[6]="DRIVE_CDROM"
    aDrvTypes[7]="DRIVE_RAMDISK"
    Return aDrvTypes[nDriveType(tcRoot)+1]

Function nDriveType
    Lparameters tcRoot && Root of drive ie: "c:\"
    Declare integer GetDriveType in WIN32API string @cDrvLetter
    Return GetDriveType(@tcRoot)

Function GetVolInfo
    Lparameters lcRoot, taInfo && Root of drive ie: "c:\", InfoArray passed by ref
    Declare SHORT GetVolumeInformation IN Win32API;
        STRING @lpRootPathName, STRING @lpVolumeNameBuffer,;
        INTEGER nVolumeNameSize, INTEGER @lpVolumeSerialNumber,;
        INTEGER @lpMaximumComponentLength, INTEGER @lpFileSystemFlags,;
        STRING @lpFileSystemNameBuffer, INTEGER nFileSystemNameSize
    Store 0 TO lnserialno, lncomplen, lnsysflags
    Store SPACE(260) TO lcvolname, lcsysname
    Store LEN(lcvolname) TO lnvolsize, lnnamesize
    If (GetVolumeInformation(@lcRoot, @lcvolname,;
            lnvolsize, @lnserialno, @lncomplen, @lnsysflags,;
            @lcsysname, lnnamesize) # 0)
        Dimension taInfo[3]
        taInfo[1] = substr(lcvolname, 1, at(chr(0),lcvolname)-1) && Volume name
        taInfo[2] = substr(lcsysname, 1, at(chr(0),lcsysname)-1) && System
        taInfo[3] = dec2hex(lnserialno) && Serial in hex format
    Else
        taInfo = ""
    Endif
    Return

Function GetDriveStrings
    Parameters aDriveStrings && Array passed by ref
    Local lpBuffer, nBufferLength, lnBuflen, lnDriveCount, ix
    Declare integer GetLogicalDriveStrings in Win32API ;
        integer  nBufferLength,	string @ lpBuffer
    lpBuffer = space(26*128)
    nBufferLength = 26*128
    lnBuflen = GetLogicalDriveStrings(nBufferLength, @lpBuffer)
    If lnBuflen # 0 && Succeeded
        lpBuffer = left(lpBuffer,lnBuflen)
        lnDriveCount = occurs(chr(0),lpBuffer)
        Dimension aDriveStrings[lnDriveCount]
        For ix = 1 to lnDriveCount
            aDriveStrings[ix] = ;
                substr(lpBuffer, ;
                iif( ix=1,1,at(chr(0),lpBuffer,ix-1)+1 ), ;
                at(chr(0),lpBuffer,ix) ;
                - iif( ix=1,0,at(chr(0),lpBuffer,ix-1)) - 1)
        Endfor
    Else
        lnDriveCount = 0
    Endif
    Return lnDriveCount

Function dec2hex
    Parameter nDecimal, nDigits
    **  Converts from base 10 to base 16.  Returns Hex notation in a string whose length
    **  is always a multiple of 2, unless the nDigits parameter is specified to pad the
    **  string with zeroes.
    cHex = ""
    Do WHILE nDecimal >= 16
        cHex = hexdigit(nDecimal % 16) + cHex
        nDecimal = int(nDecimal/16)
    Enddo
    cHex = hexdigit(nDecimal) + cHex
    Return PADL(cHex, ;
        iif( PARAMETERS() < 2, ;
        ceiling(len(cHex)/2)*2, nDigits ), "0")

Function hexdigit
    Parameters nDecimal
    Return iif(nDecimal>9,chr(asc("A")+nDecimal%10),str(nDecimal,1))
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform