GetThreadContext.cpp
Upload User: dq031136
Upload Date: 2022-08-08
Package Size: 802k
Code Size: 2k
Development Platform:

C++ Builder

  1. #include <genstub.cpp>
  2. // Windows message procedure.
  3. LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  4. {
  5.    switch (uMsg)
  6.    {
  7.        case WM_COMMAND:       // Process menu items.
  8.                switch ( LOWORD( wParam )  )
  9.                {
  10.                   case IDM_TEST:
  11.                     {
  12.                        TCHAR szBuffer[128];
  13.                        DWORD dwBaseAddr;
  14.                        LDT_ENTRY ldtEntry;
  15.                        CONTEXT context;
  16.                        context.ContextFlags = CONTEXT_FULL;
  17.                        GetThreadContext( GetCurrentThread(), &context );
  18.                        GetThreadSelectorEntry( GetCurrentThread(), context.SegDs,
  19.                                                &ldtEntry );
  20.                        dwBaseAddr = ldtEntry.BaseLow +
  21.                                     (DWORD) ldtEntry.HighWord.Bits.BaseMid << 8 +
  22.                                     (DWORD) ldtEntry.HighWord.Bits.BaseHi << 16;
  23.                        wsprintf( szBuffer,
  24.                                  "LDT entry for %lX. Base = %lX, Type = %X, Priv = %X ",
  25.                                  context.SegDs, dwBaseAddr, ldtEntry.HighWord.Bits.Type,
  26.                                  ldtEntry.HighWord.Bits.Dpl );
  27.                        MessageBox( hWnd, szBuffer, "Thread Selector Entry", MB_OK );
  28.                     }
  29.                   break;
  30.                   case IDM_EXIT:
  31.                        DestroyWindow( hWnd );
  32.                        break;
  33.                }
  34.                break;
  35.        case WM_DESTROY:
  36.                PostQuitMessage( 0 );
  37.                break;
  38.           break;
  39.        default:
  40.             return DefWindowProc( hWnd, uMsg, wParam, lParam );
  41.    }
  42.    return NULL;
  43. }