Странный вопрос, инфы ведь достаточно. оффтоп: Thetrik, а что у вас под ником, это марка 8-бит проца https://ru.wikipedia.org/wiki/Ricoh_2A03 ? Просто интересно что это значит
Я хотел что-то подобное на AVR написать, но потом понял что не стоит тратить на это время, да и уже были такие проекты.
yashechka, По своему опыту в детстве могу сделать вывод что эти консоли вызывают зависимость и вредоносны. Играть сутками и думать только об этом - типичная зависимость. Имхо не следует допускать детей к этим устройствам. Точнее должны решить ответственные за разум(человека) люди, родители к примеру, зная разум человека и принять решение допустить к таким играм или нет.
rmn, Прошло овер 20 лет, но у меня остались яркие впечатления и воспоминания. Dendy была ловушкой, это когнитивный наркотик". На той площадке были довольно продвинутые игры, очень сильно продумана динамика. Возможно даже что эта ловушка была создана намеренно. Спустя столько времени всё равно есть желание поиграть в те игры. Можно понять какое сильное воздействие в том возрасте это оказывало на разум, затягивало. Так что я неготивно отношусь к играм и таким консолям.
У каждого по-своему. Мне приятно вспоминать, что у меня было детство и денди. Денди много добавила в мою жизнь. Такого детства уже ни у кого не будет. У нас у детей 90х было настоящее детство. Не скажу, что я за ней залипал, но играл часа 2-3 в день. А вот дети 2000, это уже не дети - это также имхо. Я написал эмулятор процессора, но дальше у меня ничего не получилось, даже пиксели выводить. Считаю, что у денди архитектура сложнее, чем у сеги. У сеги 16бит и картридж проще, а у денди он намного сложнее. Не зря столько мапперов придумано для денди. А у сеги хватало 4 мега даже для мортала. Может когда-нить снова возьмусь переписать чей нить эмулятор, чтобы понять как работает видео процессор и блитинг. Вот такая у меня книга
9two, Код (C): int LoadDriver() { wchar_t ErrCode[50]; SC_HANDLE sch = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS); if (!sch) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(1)Error OpenSCManager...", MB_OK | MB_ICONERROR); return 0; } wchar_t DriverPath[MAX_PATH]; if (_WinMain.isLongMode) GetFullPathName(DRIVER_PATH64, MAX_PATH, DriverPath, NULL); else GetFullPathName(DRIVER_PATH, MAX_PATH, DriverPath, NULL); SC_HANDLE schService = CreateService(sch, SERVICE_NAME, SERVICE_NAME, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, DriverPath, 0, 0, 0, 0, 0); if (!schService) { if (GetLastError() != ERROR_SERVICE_EXISTS) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(1)Error CreateService (1)...", MB_OK | MB_ICONERROR); return 0; } UnloadDriver(); schService = CreateService(sch, SERVICE_NAME, SERVICE_NAME, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, DriverPath, 0, 0, 0, 0, 0); if (!schService) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(1)Error CreateService (2)...", MB_OK | MB_ICONERROR); return 0; } } if (!StartService(schService, 0, 0)) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(1)Error StartService...", MB_OK | MB_ICONERROR); return 0; } if (!CloseServiceHandle(schService)) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(1)Error CloseServiceHandle (1)...", MB_OK | MB_ICONERROR); return 0; } if (!CloseServiceHandle(sch)) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(1)Error CloseServiceHandle (2)...", MB_OK | MB_ICONERROR); return 0; } return 1; } Код (C): int UnloadDriver() { wchar_t ErrCode[50]; SC_HANDLE sch = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS); if (!sch) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(2)Error OpenSCManager...", MB_OK | MB_ICONERROR); return 0; } wchar_t DriverPath[MAX_PATH]; if (_WinMain.isLongMode) GetFullPathName(DRIVER_PATH64, MAX_PATH, DriverPath, NULL); else GetFullPathName(DRIVER_PATH, MAX_PATH, DriverPath, NULL); SC_HANDLE schService = OpenService(sch, SERVICE_NAME, SERVICE_ALL_ACCESS); if (!schService) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(2)Error CreateService...", MB_OK | MB_ICONERROR); return 0; } SERVICE_STATUS ServiceStatus; if (!ControlService(schService, SERVICE_CONTROL_STOP, &ServiceStatus)) { if (GetLastError() != ERROR_SERVICE_NOT_ACTIVE) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(2)Error ControlService...", MB_OK | MB_ICONERROR); return 0; } } if (!DeleteService(schService)) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(2)Error DeleteService...", MB_OK | MB_ICONERROR); return 0; } if (!CloseServiceHandle(schService)) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(2)Error CloseServiceHandle (1)...", MB_OK | MB_ICONERROR); return 0; } if (!CloseServiceHandle(sch)) { swprintf_s(ErrCode, 50, L"%d", GetLastError()); MessageBox(0, ErrCode, L"(2)Error CloseServiceHandle (2)...", MB_OK | MB_ICONERROR); return 0; } return 1; }
Если на драйвере нету цифровой подписи - под x64 начиная с win7 sp1 необходимо выполнить следующее: 1) Все же подписать драйвер тестовой подписью 2) Запустить этот батник Код ( (Unknown Language)): @echo off call :isAdmin if %errorlevel% == 0 ( goto :run ) else ( echo Requesting administrative privileges... goto :UACPrompt ) exit /b :isAdmin fsutil dirty query %systemdrive% >nul exit /b :run bcdedit.exe -set testsigning on pause exit /b :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" exit /B` 3) Ребутнуть пк После этого можно загружать драйвер. После работы выгружаем его и запускаем следующий скрипт: Код ( (Unknown Language)): @echo off call :isAdmin if %errorlevel% == 0 ( goto :run ) else ( echo Requesting administrative privileges... goto :UACPrompt ) exit /b :isAdmin fsutil dirty query %systemdrive% >nul exit /b :run bcdedit.exe -set testsigning off pause exit /b :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" exit /B` Снова ребут и все будет как раньше.