Цитата(ReAl @ Feb 8 2010, 02:37)

Да, я тоже уже доискался до этого имени, где-то даже прозвучало, что оно не полностью совместимо с dlportio.
Благо исходники доступны и сделать её полностью совместимой с dlport вроде не сильно сложно
Цитата(ReAl @ Feb 8 2010, 02:37)

Опаньки. Где-то знатная бага пролезла...
Буду смотреть diff-ы и, наверное, всё же добавлю проверку на наличие блочной функции и эмуляцию её у себя - чтобы и с непатченной работло.
А почему такой жуткий промах с определением времени цикла - непонятно абсолютно. Под XP/32 с изначальной dlportio замеряет ведь нормально.
Сорри, это мой косяк. когда добавлял DlportWritePortBuffer случайно скопипастил туда DlportWritePort(ULONG port, UCHAR data). получилось DlportWritePortBuffer с параметрами (ULONG port, UCHAR data)... со всеми вытекающими отсюда последствиями.
Теперь всё нормально и с 1.28 тоже.
в аттаче патченная дллка с исходным inpout32 64х разрядным драйвером, и родным инсталлером от dlport.
в дллку было добавлено:
Код
UCHAR _stdcall DlPortReadPortUchar (ULONG port){return Inp32(port);}
void _stdcall DlPortWritePortUchar(ULONG port, UCHAR Value){Out32(port, Value);}
USHORT _stdcall DlPortReadPortUshort (ULONG port){return Inp32(port);}
void _stdcall DlPortWritePortUshort(ULONG port, USHORT Value){Out32(port, Value);}
ULONG _stdcall DlPortReadPortUlong(ULONG port){return Inp32(port);}
void _stdcall DlPortWritePortUlong(ULONG port, ULONG Value){Out32(port, Value);}
void _stdcall DlPortReadPortBufferUchar (ULONG port, UCHAR* buff, ULONG cnt){while(cnt--) *buff++ = Inp32(port);}
void _stdcall DlPortWritePortBufferUchar(ULONG port, UCHAR* buff, ULONG cnt){while(cnt--) Out32(port, *buff++);}
void _stdcall DlPortReadPortBufferUshort (ULONG port, USHORT* buff, ULONG cnt){while(cnt--) *buff++ = Inp32(port);}
void _stdcall DlPortWritePortBufferUshort(ULONG port, USHORT* buff, ULONG cnt){while(cnt--) Out32(port, *buff++);}
void _stdcall DlPortReadPortBufferUlong(ULONG port, ULONG* buff, ULONG cnt){while(cnt--) *buff++ = Inp32(port);}
void _stdcall DlPortWritePortBufferUlong(ULONG port, ULONG* buff, ULONG cnt){while(cnt--) Out32(port, *buff++);}
еще могут быть чудеса с тем что исходные Inp32 и Out32 имеют в качестве данных всегда short. следовательно DlPortWritePortBufferUlong(ULONG port, ULONG* buff, ULONG cnt) будет работать не совсем правильно. но для avreal'a вроде не критично.
Цитата(ReAl @ Feb 8 2010, 02:37)

Значит это всё было под 64-битной ОС (какой?) с обычным avreal-ом и с той доработанной библиотекой.
"Задача-64 имеет решение" и это приятно.
Пошёл смотреть.
да, ОС winXP 64.
судя по форумам в висте64 этот драйвер тоже работает, все остальное значит тоже должно.