Каково числовое значение константы Windows CE IOCTL_DISK_READ? - PullRequest
1 голос
/ 03 июня 2011

Я пытаюсь сделать прямой доступ к диску в Win CE (5.0), и мне нужно p / вызвать вызов DeviceIoControl с IOCTL_DISK_READ.

Но я не могу найти, какой заголовочный файл определен (я использую VS2008, а не CE SDK), поэтому я не могу найти значение IOCTL.

Если кто-нибудь знает значение (или где я могу его получить), я был бы очень признателен.

1 Ответ

1 голос
/ 03 июня 2011

из diskio.h

#define IOCTL_DISK_BASE FILE_DEVICE_DISK
...
#define IOCTL_DISK_READ \
    CTL_CODE(IOCTL_DISK_BASE, 0x702, METHOD_BUFFERED, FILE_READ_ACCESS)

EDIT

Для полноты картины вам не нужно возвращать другие значения

из winioctl.h

#define CTL_CODE ( DeviceType, Function, Method, Access ) ( \
    ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
    )
...
#define METHOD_BUFFERED  0
...
#define FILE_READ_ACCESS  (0x0001)
...
#define FILE_DEVICE_DISK  0x00000007

РЕДАКТИРОВАТЬ 2 И для тех, кто ленив (как я), это разворачивается так:

(7 << 16) | (1 << 14) | (0x702 << 2) | (0)

что составляет

(0x70000) | (0x4000) | (0x1C08) | (0)

Что будет (в C #)

public const int IOCTL_DISK_READ = 0x75C08;
...