Код:
#include <WinAPIFiles.au3>
;...
$hFile = -1
If _WinAPI_IsWritableEx($sDrive) Then
$hFile = FileOpen($sTmpFileName, 1)
EndIf
;...
Func _WinAPI_IsWritableEx($sDrive)
Local $hFile = _WinAPI_CreateFileEx('\\.\' & $sDrive, $OPEN_EXISTING, 0, $FILE_SHARE_READWRITE)
If @error Then Return SetError(@error + 20, @extended, False)
Local $aRet = DllCall('kernel32.dll', 'bool', 'DeviceIoControl', 'handle', $hFile, 'dword', 0x00070024, 'ptr', 0, 'dword', 0, _
'ptr', 0, 'dword', 0, 'dword*', 0, 'ptr', 0)
Local Const $ERROR_WRITE_PROTECT = 19 ; The media is write protected.
If __CheckErrorCloseHandle($aRet, $hFile, 1) <> 10 And @extended = $ERROR_WRITE_PROTECT Then Return SetError(@error, @extended, False)
Return $aRet[0]
EndFunc
|