Дык! Мож будем сверяться с мануалом, с параметрами, прежде чем постить, а? Или это опечатка? В общем, ошибка в 6-м параметре DeviceIoControl.
чё пишут в мануале:
BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped
);
....
nOutBufferSize
[in] Size of the output buffer,
in bytes.
а тут я вижу buf_len, что есть количество 16-ти разрядных слов в буфере, не байт. Ядро при локировании страничек честно локирует сколько просишь, buf_len байт. Что есть в 2 раза меньше нужного
.
надо бы buf_len*sizeof(WORD) или sizeof(buf) написать.
Напиши, помогло или чё-то ещё?