Announcement

Collapse
No announcement yet.

Funktionspointer und Threads???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funktionspointer und Threads???

    Ich hab ein Problem, und leider absolut keine Ahnung wie ich es lösen könnte.
    Hier ist etwas Code und die "passende" Fehlermeldung.

    <b>Code:</b>
    <pre>
    class PortScanner
    {
    private:
    DWORD WINAPI ScanThread( LPVOID Data );

    public:
    void StartScan( void );
    }

    void PortScanner::StartScan( void )
    {
    HANDLE hThread[MAX_THREADS];
    DWORD dwThreadID[MAX_THREADS];

    for (int index=0; index<MAX_THREADS;index++)
    {
    hThread[index] = CreateThread( NULL,
    0,
    &ScanThread,
    (LPVOID)index,
    0,
    &dwThreadID[index]
    );
    }
    }

    DWORD WINAPI PortScanner::ScanThread( LPVOID Data )
    {
    return (DWORD) Data;
    }
    </pre>

    Wenn ScanThread nicht Teil der Klasse is, dann gehts

    <b>Fehler: </b>
    <pre>[C++ Error] portscanner.cpp(55): E2034 Cannot convert 'unsigned long (__stdcall * (_closure )(void *))(void *)' to 'unsigned long (__stdcall *)(void *)'
    [C++ Error] portscanner.cpp(55): E2342 Type mismatch in parameter 'lpStartAddress' (wanted 'unsigned long (__stdcall *)(void *)', got 'unsigned long (__stdcall * (_closure )(void *))(void *)') </pre>

    weiss vielleicht jemand was ich da machen könnte, dass es geht?

  • #2
    Hallo,

    C-Funktion ausserhalb der Klasse (oder static-Funktion) verwenden und Pointer auf Thread-Objekt als Parameter.

    #if defined( __BORLANDC__ )

    // #define _Optlink _USERENTRY

    #define _Optlink PACKAGE

    #else

    #if defined( _MSC_VER )

    #define _Optlink __cdecl

    #endif

    #endif

    extern void _Optlink ThreadExecute( void* thread );

    innerhalb Methode der Klasse:

    nThreadHandle = (TID) _beginthread( ThreadExecute, nStackSize, this )

    Comment

    Working...
    X