Suche gute MFC-Dokumentation und Frage bezüglich einer Funktion



  • Hi.

    Ich schlage mich gerade mit etwas MFC-Code auf Assembler-Ebene rum (im Disassembler).

    Gibt es denn nirgendwo eine anständige Dokumentation?

    Es geht mir um die Funktion AfxGetModuleState() und um die Struktur (Objekt?) das zurückgegeben wird.

    Danke.
    Grüße


  • Mod

    Und was willst Du damit.
    AfxGetModuleState liefert Dir einen Block von Daten für die aktuelle MFC Instanz. In diesem Block, sind thread- und applikationslokale Daten hinterlegt wie zum Beispiel die Liste der geladenen Extension DLLs, die aktuelle Ressourcen-DLL uva. mehr.
    Allerdings speichert die MFC hier auch Informationen über die Isolation von OS-Routienen.

    Was willst Du? Was brauchst Du?

    Mit dem Ding muss man im Normalfall nie was machen!



  • Was willst Du? Was brauchst Du?
    

    Eine Beschreibung der Elemente in dieser Struktur.

    Ich weiß jediglich dass sich bei [+0x4] ein Pointer zu einer weiteren Struktur befindet, der Rest ist mir etwas unklar und ich werde den Teufel tun und den ganzen Mist reversen wenn er sicher irgendwo dokumentiert ist 😉


  • Mod

    Verseh ich nicht. Du hast Doch den Sourcecode...

    class AFX_MODULE_STATE : public CNoTrackObject
    {
    public:
    #ifdef _AFXDLL
    	AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, DWORD dwVersion,
    		BOOL bSystem = FALSE);
    #else
    	explicit AFX_MODULE_STATE(BOOL bDLL);
    #endif
    	~AFX_MODULE_STATE();
    
    	CWinApp* m_pCurrentWinApp;
    	HINSTANCE m_hCurrentInstanceHandle;
    	HINSTANCE m_hCurrentResourceHandle;
    	LPCTSTR m_lpszCurrentAppName;
    	BYTE m_bDLL;    // TRUE if module is a DLL, FALSE if it is an EXE
    	BYTE m_bSystem; // TRUE if module is a "system" module, FALSE if not
    	BYTE m_bReserved[2]; // padding
    
    	DWORD m_fRegisteredClasses; // flags for registered window classes
    
    	// runtime class data
    #ifdef _AFXDLL
    	CRuntimeClass* m_pClassInit;
    #endif
    	CTypedSimpleList<CRuntimeClass*> m_classList;
    
    	// OLE object factories
    #ifndef _AFX_NO_OLE_SUPPORT
    #ifdef _AFXDLL
    	COleObjectFactory* m_pFactoryInit;
    #endif
    	CTypedSimpleList<COleObjectFactory*> m_factoryList;
    #endif
    	// number of locked OLE objects
    	long m_nObjectCount;
    


  • Verseh ich nicht. Du hast Doch den Sourcecode...

    Ich habe keine MFC-Dateien und weiß nicht wie ich ohne was zu berappen an Header kommen könnte... 😕

    Aber danke dir.


  • Mod

    Entschuldige mal. Wenn die Funktion AfxGetModuleState bekannt ist, muss es auch eine Deifnition dazu geben.
    Also hast Du sowohl Header als auch eine LIB-Datei...
    Oder woher hast Du den AfxGetModuleState?

    Zudem sind die 64bit Dateien (Header+Lib) IMHO in einem älteren SDK drin.



  • Martin Richter schrieb:

    Oder woher hast Du den AfxGetModuleState?

    IDA erkennt WinAPI/C-Stdlibrary Calls. Anscheinend auch große Teile der MFC.

    Zudem sind die 64bit Dateien (Header+Lib) IMHO in einem älteren SDK drin.

    Ich schau mal, danke.


Log in to reply