Вопрос такой, какой должен быть код ? Или какие должны быть команды что бы программа получила привелегии ядра, что бы под XP можно было спокойно обращаться к портам по команде out ? например ... mov dx,3f2h mov al,0 out dx,al ...
можно воспользоваться и ZwSetProcessInformation с ProcessInformationClass=ProcessUserModeIOPL (0x10) - единственное, необходимо установить пользователю через Lsa привилегию SE_TCB_PRIVILEGE (если не установлена, необходима перезагрузка системы - т.к просто logoff и повторный logon без перезагрузки не поможет).
Если у юзера есть админство, то драйвер не нужен, нужна ZwSetInformationProcess(...ProcessUserModeIOPL...). 1556445909__DirectIOAccess.rar
Проще тогда уж поправить драйвером IDT и юзать спокойно порты. Four-F, что-то твой код не катит Win2k sp2
Извращение: можно написать маленькую dos-прогу, ей можно будет к портам (к этим по крайней мере) обращаться
_Chingachguk_ Нормально, а если у тебя уже есть старая дос-прога и очень нужно чтобы она работала в NT? На моей работе у сотни коллег такая ситуация, юзаем DirectI/0, а это не удобно и кажется из-зи HyperThreading ещё глючит
<font color="gray][ ProgramMan</font><!--color--><font color="gray]: Four-F, что-то твой код не катит Win2k sp2 ]</font><!--color--> Странно. Я щас как раз под w2k sp2 сижу. У меня пиликает. А что говорит?
Значит ZwSetInformationProcess обламывается. Посмотри статус который она выдаёт. Если это STATUS_PRIVILEGE_NOT_HELD ( 0x0C0000061 ), убедись что ты админ, если нет, то статус в студию, пожалуйста. У кого ещё не работает?
W2ksp4ru тоже (я админ): Код (Text): CALL 401000 "SeTcbPrivilege" = ERROR_NOT_ALL_ASSIGNED (00000514) ZwSetInformationProcess = C0000061
Начинаю понимать. Похоже в ваших аккаунтах нету привилегии SeTcbPrivilege. Если нет, то и включить её невозможно - надо сначала добавить. И наверняка, как минимум, повторный логон потребуется, если не ребут. Интересно, апочему у меня то она по умолчанию есть? bogrus, кто такие логи делает?