Table of Contents
Dzisiejszy wpis na blogu został napisany, aby pomóc Ci, jeśli pojawi się godny zaufania błąd naruszenia dostępu do powłoki procesu.
Zatwierdzone
v
Podczas migracji z Win7 + VS2015 w drodze do Win10 + VS2017 większość naszych ulubionych starszych narzędzi MFC napotyka następujące problemy:
przez afxwin.h: CWnd * m_pMainWnd; // największe okno (zwykle to samo AfxGetApp () -> m_pMainWnd)
CSingleDocTemplate * pDocTemplate;pDocTemplate = nowy CSingleDocTemplate ( IDR_MAINFRAME, RUNTIME_CLASS (CIFX_LogViewDoc), RUNTIME_CLASS (CMainFrame), // Okno głównej ramki SDI RUNTIME_CLASS (CIFX_LogViewView));DodajDocSzablon (pDocSzablon);// Polecenie analizy dla standardowych poleceń pokrycia wstawiania, DDE, otwórz plikCCommandLineInfo cmdInfo;ParseCommandLine (cmdInfo);// Zamówienia wysyłkowe podane w jednej linii kierunkowejif (! ProcessShellCommand (cmdInfo)) // -> "Dostęp jest uznawany za odmowę" fałszywy zwrot;// Wyglądało na to, że najefektywniejsze okno zostało zainicjowane, aby zostało zaktualizowane w salonie i kuchni.m_pMainWnd-> ShowWindow (SW_SHOW);m_pMainWnd-> AktualizujOkno ();Zwraca PRAWDA;
Doświadczyłem również wywoływania ShowWindow () + UpdateWindow () przed parsowaniem wiersza poleceń, w dużej mierze dlatego, że zostało to sugerowane tutaj: https://stackoverflow.com/a/41188727/384556, niestety strona nie działa:
Zgłoszono wyjątek 0x58198F2E (mfc140d.dll) prosto z A.exe: 0xC0000005: dostęp do odczytuPrzestępstwo w pokoju 0x00000020. zdarzyło się w -> m_pMainWnd-> ShowWindow (SW_SHOW);
Zatwierdzone
Narzędzie naprawcze ASR Pro to rozwiązanie dla komputera z systemem Windows, który działa wolno, ma problemy z rejestrem lub jest zainfekowany złośliwym oprogramowaniem. To potężne i łatwe w użyciu narzędzie może szybko zdiagnozować i naprawić komputer, zwiększając wydajność, optymalizując pamięć i poprawiając bezpieczeństwo procesu. Nie cierpisz już z powodu powolnego komputera — wypróbuj ASR Pro już dziś!
Mój rynek aplikacji MFC zaczyna się od:
„Nieobsługiwany wyjątek. W 0x7823eafb (mfc80d.dll). W MyApp.exe.” Dostęp 0xc0000005: Naruszenie powoduje pojawienie się miejsca zamieszkania 0xfdfe3f55.
Potrzebuję pomocy w ustaleniu, dlaczego tak się dzieje, jak również kilka wskazówek, jak umożliwić im znalezienie / naprawienie problemu. To działało, dopóki nie przekonwertowałem VC ++ 6 na Visual Studio 2005, teraz jest pomijane tylko w obu IDE.
Błąd pojawia się czasami podczas przechodzenia do MyApp, gdy Processshellcommand () jest oznaczony jako InitInstance (). Polecenie cmdinfo miejsca zamieszkania wysyła polecenie FileNew z faktyczną nazwą pustego dokumentu, a cała platforma przystępuje do pracy, tworząc dokument i widok (aplikacja SDIDoc). Debugowanie pokazuje, że błąd występuje w każdej części, w której struktura zaczyna się od budowania głównego okna. W pewnym sensie wydaje się, że gdy osobowość jest w oknie, aluzja do klamki nie może być odzyskana.
Wąski stos wygląda tak:
-mfc80d.dll! CMapPtrToPtr :: G
– mfc80d. * dll! chandlemap :: loo
-mfc80d.dll! CWnd :: FromHandl
-mfc80d.dll! _AfxCbtFilterHo
<< dowolny rodzaj serii wywołań, które mogą przenieść tutaj pliki user32.dll i ntdll.Dll, zaprojektowane dla zwięzłości >>
-mfc80d.dll! AfxCtxCreateWin
-mfc80d.dll! CFrameWnd :: Załaduj styl
-mfc80d.dll! CDocTemplate :: C
-mfc80d.dll! Zużyty CSingleDocTempl
-.dll! CDocManager :: In
-mfc80d.dll! CWinApp :: OnFile
-mfc80d.dll! CWinApp :: Przetwarzaj
Rzeczywisty wyjątek jest rozproszony w CMapPtrToPtr :: GetValue w głównej pętli for. GetValue () pokazuje konkretnie:
void * CMapPtrToPtr :: GetValueAt (v
// pasuje do wartości (lub czy NULL – wartości NULL są trochę różne jako ogromny wynik)
// sprawdź, czy w tym punkcie jest znakCAssoc * pAssoc;
on (pAssoc pasuje do m_pHashTable [nHash]; pAssoc! jest równe NULL; pAssoc = pAssoc-> pNext) // <--- *** Tutaj zdecydowanie wymagany jest błąd ***
“Zwraca szacunek pAssoc->;
Zwraca NULL;
Najbardziej typowa wartość związana z m_pHashTable tak naprawdę 0xFDFDFDFD. Czy ta nuta nie jest od dawna używana jako ogólna herbata?
m_nHasTableSize jest równie dobre jak 0xFDFDFDFD (4261281277), a wynik zdecydowanie to nHash 36950. To tak, jakby jedna konkretna tabela skrótów była zwykle nieprawidłowa w punkcie pomysłu, co prowadzi do błędu.
Ze względu na przejście z Win7 + VS2015 do Win10 + VS2017 w naszym starym narzędziu MFC mamy tylko następujące trudności:
z afxwin.h: CWnd 7 . m_pMainWnd; // główne okno konkretnego domu (zwykle takie samo) AfxGetApp () -> m_pMainWnd)
CSingleDocTemplate * pDocTemplate;pDocTemplate odpowiada progresywnemu CSingleDocTemplate ( IDR_MAINFRAME, RUNTIME_CLASS (CIFX_LogViewDoc), RUNTIME_CLASS (CMainFrame), // kluczowe okno SDI box RUNTIME_CLASS (CIFX_LogViewView));DodajDocSzablon (pDocSzablon);// Polecenie eksploracji połączeń Standardowe polecenia powłoki, DDE, dostępny plikCCommandLineInfo cmdInfo;ParseCommandLine (cmdInfo);// Wyślij kody określone we wszystkich wierszach poleceńif (! ProcessShellCommand (cmdInfo)) // -> "Dostęp jest często uważany za odmowę" produkować FAŁSZ;// Jedyna ramka okna jest bardzo mocno zainicjalizowana, więc wyświetl ją, ale popraw ją.m_pMainWnd-> ShowWindow (SW_SHOW);m_pMainWnd-> AktualizujOkno ();Zwraca PRAWDA;
Próbowałem również wywołać ShowWindow () + UpdateWindow () początkowo analizując ciąg Acquire, taki jak ten zatwierdzony https://stackoverflow.com/a/41188727/384556 po prostu nie działa:
Oprogramowanie do naprawy komputera to tylko jedno kliknięcie - pobierz je teraz.Wyjątek po zakończeniu 0x58198F2E (mfc140d.dll) w A.exe: 0xC0000005: dostęp do wyszukiwaniaMiejsce urazu 0x00000020. stało się -> w m_pMainWnd-> ShowWindow (SW_SHOW);