powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Code Review: поясните, плиз.
7 сообщений из 7, страница 1 из 1
Code Review: поясните, плиз.
    #32726470
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В статье " An OLE Control for Creating Win32 Services in Visual Basic " есть такой фрагмент кода:


Код: plaintext
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.
Figure  5 . Service Thread

DWORD CNtSvcCtrl::ServiceThread(LPVOID)
{
    BOOL b;

     // Get a pointer to the C++ object. 
    CNtSvcCtrl* pService = m_pThis;

    SERVICE_TABLE_ENTRY st[] = {
        {m_pThis->m_szServiceName, ServiceMain},
        {NULL, NULL}
    };

    m_pThis->DebugMsg(
        TEXT("Calling StartServiceCtrlDispatcher()"));

     // Call the services dispatcher. This call blocks 
     // until the service stops. 
    b = ::StartServiceCtrlDispatcher(st);

    m_pThis->DebugMsg(
        TEXT("Returned from StartServiceCtrlDispatcher()"));

    return b;
}


Вопрос: для чего требуется строка CNtSvcCtrl* pService = m_pThis; ?

Спасибо
...
Рейтинг: 0 / 0
Code Review: поясните, плиз.
    #32726665
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как ,
вообщем я так понял
что типа

есть обьект CNtSvcCtrl

в нем вызывается метод Который в свою очередь создает
новый процесс/нить ..

перед этим он типа передает ссылку на себя

m_pThis = this;

и в этом процессе/нити он работет типа сам с собой ...

ЗЫ.
сцылку не смотрел в Опере не хочет открыватся ..






 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Code Review: поясните, плиз.
    #32727840
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну нет. Я так понимаю, что в строке:

Код: plaintext
CNtSvcCtrl* pService = m_pThis;

объявляется переменная с именем pService, которая есть указатель на объект типа CNtSvcCtrl. И переменная инициализируется значением m_pThis. Так вот, в коде процедуры она (pService) не используется, а так как переменная локальная, то нигде более она не может использоваться, ибо будет уничтожена при выходе из процедуры (так?). Вот я и удивился - просто оставили код левый что ли...
...
Рейтинг: 0 / 0
Code Review: поясните, плиз.
    #32727955
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код не левый, он с комментарием.
_______________
так жить нельзя.
...
Рейтинг: 0 / 0
Code Review: поясните, плиз.
    #32728062
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объявляется переменная с именем pService, которая есть указатель на объект типа CNtSvcCtrl

Ну да именно это я и имел ввиду ...
...
Рейтинг: 0 / 0
Code Review: поясните, плиз.
    #32728787
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snakeкод не левый, он с комментарием.
_______________
так жить нельзя.

Ну хорошо, комментарий: Get a pointer to the C++ object.
Ну и зачем этот указатель нужен?
...
Рейтинг: 0 / 0
Code Review: поясните, плиз.
    #32729143
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если серьезно:
то если CNtSvcCtrl* не какой-нибудь макрос, то вовсе этот указатель не нужен(судя по коду функции).

________________________
jimmers, так жить нельзя.

;)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Code Review: поясните, плиз.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]