DirectShow + Windows 7 + Windows service

Тема в разделе "WASM.WIN32", создана пользователем _DEN_, 12 янв 2011.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Привет.

    Есть приложение, которое читает видео с веб-камеры через DirectShow. На Windows 7 есть проблема. Приложение работает, если оно запущено юзером руками как win32 приложение, но не работает, если его запускает windows service. При этом на Windows XP все работает.

    Если быть точным, то во время вызова

    ICaptureGraphBuilder2::RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, base_filter, 0, grabber_filter);

    приложение просто испаряется из списка процессов - никаких там кодов ошибок, возвращенных RenderStream - приложение просто самовыпиливается. К сожалению, возможности установить студию и приаттачиться дебаггером у меня нет.

    Если не ошибаюсь, то начиная с висты у сервисов как-то урезались права по работе с гуями. Мне кажется, что проблема где-то из этой серии. Я пробовал запускать приложение из сервиса не через CreateProcess, а через LogonUser от текущего юзера + CreateProcessAsUser, однако это не помогло.

    Какие дадите советы по починке, или хотя бы траблшутингу?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    В системных логах тоже ничего?
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Этого пока что не знаю - комп, на котором это происходит, сейчас недоступен.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Скорее всего в логах и будет написана причина.
     
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Вместо LogonUser попробуйте взять токен уже залогиненого юзера.
     
  6. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    При создании сервиса, вроде как флажок нужно указывать что он гуёвый.
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    RET
    Гуёвые сервисы в висте и выше, не поддерживаются.
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Partner

    Тут проблема в том, что нужно чтобы это работало даже если никто не залогинен.
     
  9. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Программа должна быть задизайнена работать в сервисе - не использовать GUI, не обращаться к HKEY_CURRENT_USER и т.д.