Форум программистов, компьютерный форум CyberForum.ru

SIGINT с OpenSSL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Время чтения данных с заданного цилиндра и среднее время перехода блока головок к соседнему цилиндру FDD или HDD http://www.cyberforum.ru/cpp/thread453254.html
Нужно написать прогу на Си Условие:. Время чтения данных с заданного цилиндра и среднее время перехода блока головок к соседнему цилиндру FDD или HDD.
C++ SDL Графика. Добрый день! Не могу соединить два проекта, в одном изображение переводится в ч\б, во втором тонируется изображение. Мне нужно получить эффект сепии(нужно сначала сделать его ч\б затем тонировать). Буду благодарен за помощь!! http://www.cyberforum.ru/cpp/thread453076.html
C++ выудить информацию о материнской плате.
есть возможность с помощью с++ выудить инфу о матплате. Такие параметры, как частота шины, название, разрядность( такая же как у проца) вроде как достаются) но не пока понятия не имею как... поможите кто чем может пожалуйста)
SDL - Конфигурирование C++
Всем доброго времени суток. Недавно натолкнулся проблему с настройкой SDL. Дело в том, что мне нужно отключить переадресацию stdio с консоли на файлы, что делается простым конфигурированием с ключом --disable-stdio-redirect и компилированием исходников SDL. Скачал исходники - и вот первая проблема: невозможность штатного конфигурирования под Windows. Удивлён. Запустил Mandriva 2011. Попробовал...
C++ снимать данные с камеры и сравнивать их с БД http://www.cyberforum.ru/cpp/thread452517.html
Написать программу которая будет снимать данные с камеры и сравнивать их с БД, в которую внесены изображения и если нашлись совпадение, то через динамик выводится сообщение определяющее данное изображение!:cry:
C++ Нужен калькулятор полиномов (многочленов) калькулятор полиномов(многочленов) нужно +-*\ полиномы, прошу помоч прога на С++ или паскаль(делфи) подробнее

Показать сообщение отдельно
soMan
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 5
26.02.2012, 23:03  [ТС]     SIGINT с OpenSSL
Приведу куски кода из исходничков, может, чем-нибудь помогут.
Юзание GetProcAddress(dll,"CreateToolhelp32Snapshot");
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <tlhelp32.h>
#ifdef _WIN32_WCE
# define DLLNAME "TOOLHELP.DLL"
#else
# ifdef MODULEENTRY32
# undef MODULEENTRY32   /* unmask the ASCII version! */
# endif
# define DLLNAME "KERNEL32.DLL"
#endif
 
typedef HANDLE (WINAPI *CREATETOOLHELP32SNAPSHOT)(DWORD, DWORD);
typedef BOOL (WINAPI *CLOSETOOLHELP32SNAPSHOT)(HANDLE);
typedef BOOL (WINAPI *MODULE32)(HANDLE, MODULEENTRY32 *);
 
static int win32_pathbyaddr(void *addr,char *path,int sz)
    {
    HMODULE dll;
    HANDLE hModuleSnap = INVALID_HANDLE_VALUE; 
    MODULEENTRY32 me32; 
    CREATETOOLHELP32SNAPSHOT create_snap;
    CLOSETOOLHELP32SNAPSHOT  close_snap;
    MODULE32 module_first, module_next;
    int len;
 
    if (addr == NULL)
        {
        union   { int(*f)(void*,char*,int); void *p; } t =
            { win32_pathbyaddr };
        addr = t.p;
        }
 
    dll = LoadLibrary(TEXT(DLLNAME));
    if (dll == NULL)
        {
        DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
        return -1;
        }
 
    create_snap = (CREATETOOLHELP32SNAPSHOT)
        GetProcAddress(dll,"CreateToolhelp32Snapshot");
    if (create_snap == NULL)
        {
        FreeLibrary(dll);
        DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
        return -1;
        }
    /* We take the rest for granted... */
#ifdef _WIN32_WCE
    close_snap = (CLOSETOOLHELP32SNAPSHOT)
        GetProcAddress(dll,"CloseToolhelp32Snapshot");
#else
    close_snap = (CLOSETOOLHELP32SNAPSHOT)CloseHandle;
#endif
    module_first = (MODULE32)GetProcAddress(dll,"Module32First");
    module_next  = (MODULE32)GetProcAddress(dll,"Module32Next");
 
    hModuleSnap = (*create_snap)(TH32CS_SNAPMODULE,0); 
    if( hModuleSnap == INVALID_HANDLE_VALUE ) 
        { 
        FreeLibrary(dll);
        DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
        return -1;
        } 
 
    me32.dwSize = sizeof(me32); 
 
    if(!(*module_first)(hModuleSnap,&me32)) 
        { 
        (*close_snap)(hModuleSnap);
        FreeLibrary(dll);
        DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_FAILURE);
        return -1;
        }
 
    do  { 
        if ((BYTE *)addr >= me32.modBaseAddr &&
            (BYTE *)addr <  me32.modBaseAddr+me32.modBaseSize)
            {
            (*close_snap)(hModuleSnap);
            FreeLibrary(dll);
#ifdef _WIN32_WCE
# if _WIN32_WCE >= 101
            return WideCharToMultiByte(CP_ACP,0,me32.szExePath,-1,
                            path,sz,NULL,NULL);
# else
            len = (int)wcslen(me32.szExePath);
            if (sz <= 0) return len+1;
            if (len >= sz) len=sz-1;
            for(i=0;i<len;i++)
                path[i] = (char)me32.szExePath[i];
            path[len++] = 0;
            return len;
# endif
#else
            len = (int)strlen(me32.szExePath);
            if (sz <= 0) return len+1;
            if (len >= sz) len=sz-1;
            memcpy(path,me32.szExePath,len);
            path[len++] = 0;
            return len;
#endif
            } 
        } while((*module_next)(hModuleSnap, &me32)); 
 
    (*close_snap)(hModuleSnap); 
    FreeLibrary(dll);
    return 0;
    }
Функция OPENSSL_isservice
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
int OPENSSL_isservice(void)
{ HWINSTA h;
  DWORD len;
  WCHAR *name;
  static union { void *p; int (*f)(void); } _OPENSSL_isservice = { NULL };
 
    if (_OPENSSL_isservice.p == NULL) {
    HANDLE h = GetModuleHandle(NULL);
    if (h != NULL)
        _OPENSSL_isservice.p = GetProcAddress(h,"_OPENSSL_isservice");
    if (_OPENSSL_isservice.p == NULL)
        _OPENSSL_isservice.p = (void *)-1;
    }
 
    if (_OPENSSL_isservice.p != (void *)-1)
    return (*_OPENSSL_isservice.f)();
 
    (void)GetDesktopWindow(); /* return value is ignored */
 
    h = GetProcessWindowStation();
    if (h==NULL) return -1;
 
    if (GetUserObjectInformationW (h,UOI_NAME,NULL,0,&len) ||
    GetLastError() != ERROR_INSUFFICIENT_BUFFER)
    return -1;
 
    if (len>512) return -1;     /* paranoia */
    len++,len&=~1;          /* paranoia */
    name=(WCHAR *)alloca(len+sizeof(WCHAR));
    if (!GetUserObjectInformationW (h,UOI_NAME,name,len,&len))
    return -1;
 
    len++,len&=~1;          /* paranoia */
    name[len/sizeof(WCHAR)]=L'\0';  /* paranoia */
#if 1
    /* This doesn't cover "interactive" services [working with real
     * WinSta0's] nor programs started non-interactively by Task
     * Scheduler [those are working with SAWinSta]. */
    if (wcsstr(name,L"Service-0x")) return 1;
#else
    /* This covers all non-interactive programs such as services. */
    if (!wcsstr(name,L"WinSta0"))   return 1;
#endif
    else                return 0;
}
#else
int OPENSSL_isservice(void) { return 0; }
#endif
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru