API - Disk Access / Какая API ?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

API - Disk Access / Какая API ?

Сообщение EvilCoder » 11.02.2006 (Сб) 19:32

Какая API мне поможет? обязательно из kernel32 8)

Нужно что то вроде.

If DiskRWAccess("c:\") = True ? :?

Тупой вопрос.. но решить что то не получается. :roll:
<<------- EvilCoder ------->>

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 11.02.2006 (Сб) 20:57

EvilCoder
А самому написать? Тебе надо проверить доступен ли диск на запись/чтение. Ну вот. Напиши функцию которая сначала создаёт файл (запись) пишет в него (запись) потом читает его и удаляет.

Придумал примерно так:
Код: Выделить всё

Function AccessRW(disk as string) as boolean
Dim buffer as string
On Error Goto Err
open disk & "\tmp.check" for random as #1 'создаём

buffer =Time$
put #1,,buffer
get #1,,buffer 'неважно

close #1

kill disk & "\tmp.check"

if err.number = 0 then
AccessRW = true
End if

exit Function

err:
AccessRW = false
End function


Функция конечно прмитивная, но работает

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 12.02.2006 (Вс) 1:06

Нет этот вариант не подойдет... по причине:

1. Мне нужно все на чистом API.
2. В случае с диском А, выходит сообщение Retry и т.д (как и в моем варианте с функцией GetTempFileNameA-создает темп файл :wink: :roll: )
<<------- EvilCoder ------->>

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 12.02.2006 (Вс) 4:33

EvilCoder
а под АПИ переписать нельзя? :wink:
OpenFile / WriteFile / ReadFile / DeleteFile

хм....

попробуй DeviceIoControl с кодом операции IOCTL_DISK_PERFORMANCE, получишь структуру DISK_PERFORMANCE. подробности в MSDN

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 12.02.2006 (Вс) 14:12

Какие контролы.... :roll: мне просто одна API нужна и обязательно из kernel32...

В случае с OpenFile - надо знать что открывать.. и т.д.
Можно конечно с CreateFile а потом WriteFile и посмотреть результат. Хотел узнать более красивое решение...
<<------- EvilCoder ------->>

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 12.02.2006 (Вс) 14:14

И вообще, к VB это никакого отношения не имеет. Иначе я бы в этом разделе не задавал вопрос... 8)
<<------- EvilCoder ------->>

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 13.02.2006 (Пн) 9:17

EvilCoder писал(а):Какие контролы.... :roll:

Вот и мне интересно, КАКИЕ ты тут контрлы углядел? DeviceIOControl - это функция WinAPI.
Ну еще есть GetVolumeInformation, которая то же может не работать, если доступ к диску закрыт :)
В случае с OpenFile - надо знать что открывать.. и т.д.
Можно конечно с CreateFile

Еще, к сведенью, преведу цитату из MSDN, про описание OpenFile:
Storage: Platform SDK писал(а):Note This function is provided only for compatibility with 16-bit versions of Windows. New applications should use the CreateFile function
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 116

    TopList  
cron