Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Вкратце чтоб хоть было ясно о чем. Есть служба "Fax". (fxssvc.exe) Для нее пишется Dll, своя, назовем ее MyExtension.dll Using the Fax Routing Extension API Библиотека MyExtension.dll написана (все согласно SDK и с использованием примера), отрабатывал ее как x64 (потому что на Win10 x64 сижу, а там вызывающий процесс fxssvc.exe 64-битный). Компилируется в VC++2005 (name="Microsoft.VC80.CRT" version="8.0.50727.762") -потому что собаку с этим съел - для гарантированной совместимости со всеми OS. Одинаковые конфигурации, один проект, различается только "x64 Release" и "Win32 Release". Имеем: x64 на x64 -dll загружается, Extension работает как задумано. И на Win2003 x64, и на Win10/2016 x64 (и не сомневаюсь что на всех что между). Как часики. А счас начал проверять "Win32 Release". На Win XP/Win 2003 x86 Что происходит при старте "Fax". (fxssvc.exe) Судя по логу MyExtension(32).dll загружается, т.е. ф-ции инициализации FaxExtInitializeConfig/FaxRouteInitialize отрабатывают, а на этом этапе ничего больше и не требуется, а вот следующую dll (назовем ее MyFSP(32).dll, грузится сразу следом) - сервис fxssvc.exe даже не начинает загружать (лог отсутствует). Служба "Fax" якобы "запущена", но ничего не работает. Если убрать (разрегистрировать ) MyExtension(32).dll, то MyFSP(32).dll грузится OK и все работает. На Win10 x86 веселее. Что происходит при старте "Fax". (fxssvc.exe) Судя по логу MyExtension(32).dll загружается, т.е. ф-ции инициализации FaxExtInitializeConfig/FaxRouteInitialize отрабатывают, а на этом этапе ничего больше и не требуется, следующую dll (MyFSP(32).dll, грузится сразу следом) - сервис fxssvc.exe начинает грузить как и положено (т.е. лог появляется, но только в теч. первых 100мс). После чего (если запускать службу Fax из консоли MMC ->Services) сервис (вызывающий процесс fxssvc.exe) рушится: Error 1067: The process terminated unexpectedly. В журнале имеем это: Log Name: Application Source: Microsoft Fax Date: 8/8/2017 1:34:53 PM Event ID: 32108 Task Category: Unknown Level: Error Keywords: Classic User: N/A Computer: SERVER1 Description: The Fax Service encountered a problem and needed to close. Error Code: 0x00000000 This error code indicates the cause of the error. A Windows Error Report was generated with full details about the problem. The Fax service will restart now. Log Name: Application Source: Application Error Date: 8/8/2017 1:34:53 PM Event ID: 1000 Task Category: (100) Level: Error Keywords: Classic User: N/A Computer: SERVER1 Description: Faulting application name: fxssvc.exe, version: 10.0.15063.0, time stamp: 0xac13f85f Faulting module name: fxssvc.exe, version: 10.0.15063.0, time stamp: 0xac13f85f Exception code: 0xc0000005 Fault offset: 0x00046e85 Faulting process id: 0x1fdc Faulting application start time: 0x01d31031f87af2a1 Faulting application path: C:\Windows\system32\fxssvc.exe Faulting module path: C:\Windows\system32\fxssvc.exe Report Id: c2d07d2a-f587-43ee-83cb-a7608f2a0e1b Faulting package full name: Faulting package-relative application ID: Log Name: Application Source: Windows Error Reporting Date: 8/8/2017 1:34:53 PM Event ID: 1001 Task Category: None Level: Information Keywords: Classic User: N/A Computer: SERVER1 Description: Fault bucket , type 0 Event Name: APPCRASH Response: Нет данных Cab Id: 0 Problem signature: P1: fxssvc.exe P2: 10.0.15063.0 P3: ac13f85f P4: fxssvc.exe P5: 10.0.15063.0 P6: ac13f85f P7: c0000005 P8: 00046e85 P9: P10: Если убрать (разрегистрировать ) MyExtension(32).dll, то MyFSP(32).dll грузится OK и все работает. Я понимаю что сумбурно объясняю, что мало кто в этом чего понимает. Но я даже не знаю как искать причину. Абсолютно один и тот же проект. (2 месяца над ним работал, ну не одна dll естественно, но эта dll -это основная начинка) Сделан из стандартного шаблона Win32 Dll в VC++ 2005. x64 версия на x64 -как часики такая же точно Win32 - такая подстава. Т.е. если "Fax" fxssvc.exe на 32-бит системе загружает MyExtension(32).dll, то он либо тупит (на XP/2003 Win32), либо рушится (на Win10 Win32). Проблема явно не в версии OS. И не в рантайме (8.0.50727.762 абсолютно надежен). Счас пока думаю сделать с нуля "пустую dll", естественно с требуемым набором экспортируемых ф-ций, но с отсутствием кода в них, ну м.б. элементарный лог (хотя crash и без лога вероятно будет). Но с кодом как таковым вряд ли что-то не так. Еще вероятно должен быть какой-то debug для "Fax" fxssvc.exe, но не уверен что винды его генерируют да еще на таком уровне чтоб это ткнуло в проблему, не нашел пока. Dll то моя, а процесс ее запускающий - виндовский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 15:17 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
авторException code: 0xc0000005 Если не путаю это обращение к несуществующей памяти. Т.е. или твоя DLL куда-то не туда полезла, или заставила полезть EXE. Сделай функцию записи в лог (открыл файл, записал строку, закрыл) и навтыкай ее вызов везде в коде. Постепенно вычислишь в какой момент вылетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 15:26 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Dll то моя, а процесс ее запускающий - виндовский. ничего страшного, студийный отладчик умеет цепляться к запущенному процессу в том числе и к сервису ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 15:29 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Dima TСделай функцию записи в лог (открыл файл, записал строку, закрыл) и навтыкай ее вызов везде в коде. Постепенно вычислишь в какой момент вылетает. Так есть этот лог. Код: plaintext 1. 2. 3. 4. Лог показывает, что обе ф-ции инициализации отрабатывают, а при старте сервиса от этой dll больше ничего и не требуется. А exe рушится потом, на Win10 минимум через + 100мс (потому что успевает начать грузить следующую dll что отражено в ее логе). А на XP он и грузить следующую не хочет (но и не рушится). Если только предположить, что пытается вызвать еще что-то, чего там нет (или что там прописано неправильно с т.зр. Win32). Т.е. до строчки Enter--- дело не доходит. Но эта штука ж так устроена, что если не найдет в dll какой-либо обязательной экспортируемой ф-ции, то вообще ее грузить не будет. Идей пока нет. ИзопропилДмитрий77Dll то моя, а процесс ее запускающий - виндовский. ничего страшного, студийный отладчик умеет цепляться к запущенному процессу в том числе и к сервису Не стоит у меня студий на тестовых системах во избежании "необъективных тестов" (а x86 - только тестовые), можно конечно поставить но пока не уверен что надо начинать эту эпопею. да и не шибко умею работать с этими "отладчиками". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 16:12 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Еще вероятно должен быть какой-то debug для "Fax" fxssvc.exe, но не уверен что винды его генерируют да еще на таком уровне чтоб это ткнуло в проблему, не нашел пока. Dll то моя, а процесс ее запускающий - виндовский. Если служба/процесс крашится, то почему в Windows не настроить для нее автоматический сбор дампов и выполнять анализ в родной студии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 16:15 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Смотри FaxExtInitializeConfig, похоже там даются какие-то неправильные настройки для EXE и когда он ими пытается воспользоваться, то вылетает. PS Как понимаю тоже самое скомпилированное под x64 работает, поэтому исключаем вариант что какие-то настройки не сделаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 16:19 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Dima TСмотри FaxExtInitializeConfig, похоже там .. Код: 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. 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. Там ничего умного нету. "Отсебятиной" является открытие записи в лог. (до первого ROUTEDEBUG) Судя по тому, что лог он пишет, с этим все хорошо. Если про создание лога убрать, краш никуда не девается. Идея у меня пока убрать вообще весь код, оставив только "пустой скелет", чтоб он ее просто загружал хотя бы без краша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 16:43 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Не стоит у меня студий на тестовых системах во избежании "необъективных тестов" на виртуалке поставь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 16:46 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, у тебя в конце Код: plaintext 1. т.е. после того как весь код уже отработал. Если FaxRouteInitialize Enter по такому принципу выводится, то ошибка может быть в начале FaxRouteInitialize() эта строчка должна быть первой в коде функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 16:59 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Изопропил, нафиг мне виртуалки, у меня круче есть 20584577 Собрал таки себе новый комп для тестов, не топовый конечно. Intel CPU3260 + мать Gigabite H81 + 8ГБ ОЗУ DDR3 + Nvidia GT730 Asus 2GB GDDR3 (лучшее без кулера) Конфигурацию выбрал не случайно, т.к. это последнее на что накатывается все подряд от XP (с драйверами!!!) до Win10 Диск 1 TB разбил на 22!!! логических ~ по 40GB (достаточно для одной OS). Буквы A,B - зарезервированы лучше не использовать Z-всегда ставится под DWD-ROM. Остается одна Y под флэшку. + я понял она еще нужна при загрузке с CD (установка OS). Дык вот, 16 разных OS "от XP до Win10" я туда успешно накатал ... Короче у меня есть почти все комбинации кроме 32-битной висты и 2008-х (без R2) серверов - на это "уе..ище" моральных сил бы не хватило. Хотя 2008-й видимо придется ставить, потому что это единственный 32-битный сервер NT>=6.0, а раз такие проблемы с 32-битной dll, то он будет не лишним для тестов (многолинейность и визуальность Fax Service есть только на серверах). Ну, понятно, что одну 32-битную ось я могу позволить себе "изгадить" (потом если что и переустановить можно). Пока не хочу по этому пути идти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 17:13 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Ну, понятно, что одну 32-битную ось я могу позволить себе "изгадить" (потом если что и переустановить можно). Пока не хочу по этому пути идти. В виртуалке можно снимок диска сделать, потестить что надо и затем откатиться к исходному состоянию. В твоем случае тоже можно: перелей образ раздела с нужной ОС на какой-нибудь HDD и там тести. Или просто забэкапь, потом восстановишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 17:17 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Dima TДмитрий77, у тебя в конце Код: plaintext 1. т.е. после того как весь код уже отработал. Если FaxRouteInitialize Enter по такому принципу выводится, то ошибка может быть в начале FaxRouteInitialize() эта строчка должна быть первой в коде функции. Там нету "кода". Там только код открытия записи в лог-файл. Как я ROUTEDEBUG в файл выведу, не открыв этот самый файл Код: 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. 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. 109. 110. 111. 112. Код, это Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 17:23 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Dima TВ твоем случае тоже можно: перелей образ раздела с нужной ОС на какой-нибудь HDD и там тести. Или просто забэкапь, потом восстановишь. Че ее бэкапить то. Гадишь, форматируешь и заново ставишь (пару часов). Комп то тестовый, чище-лучше. Если это не XP то мультизагрузочное меню этим не испортишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 17:29 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Сделал пустышку. Проект приложен. Для регистрации - запустить файл TestRouteExt.reg (лежит в папке с проектом) (в моем случае ImageName C:\777\TestRouteExt.dll -поменять на реальный путь, где лежит Dll) Запустить службу "Fax". На x64 (x64 Release) -все OK. Файл "закушен" на время работы службы и не мешает ее работе. На Win32 Win10 (Win32 Release) при попытке запуска службы Код: plaintext 1. На XP/2003 x86 пока не проверял, но результат прогнозируемый (думаю будет как описал в первом посте) Я компилирую VC++2005 (name="Microsoft.VC80.CRT" version="8.0.50727.762") Подключенные файлы : C:\Program Files\Microsoft SDKs\Windows\v6.1\Include\faxroute.h C:\Program Files\Microsoft SDKs\Windows\v6.1\Include\faxext.h VC++ Directories: C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin C:\Program Files\Microsoft SDKs\Windows\v6.1\Include C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib Идей нет. Ну только если попытаться повторить пустышку в 13-й студии (но это заведомо ненадежно) и хоть глянуть что будет на Win10-32. Код: 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. 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. TestRouteExt.h Код: plaintext 1. 2. TestRouteExt.def (Linker -> Input -> Module Defenition File) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 18:54 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, call convention(WINAPI) для FaxExtInitializeConfig не задан в 64 бит - это пох, в 32 - важно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 20:17 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Изопропилcall convention(WINAPI) для FaxExtInitializeConfig не задан в 64 бит - это пох, в 32 - важно Вот я счас мувнул проект в 13-ю студию, он мне 32-бит компилировать не хочет testrouteext.cpp(29): error C2373: FaxExtInitializeConfig: переопределение; различные модификаторы типа c:\program files (x86)\windows kits\8.1\include\um\faxext.h(126): см. объявление "FaxExtInitializeConfig" Что конкретно и где надо дописать в 2005-й? (из SDK-шного примера вроде ничего существенного не выкидывал). Код: plaintext 1. Это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 20:37 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Это? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 20:43 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Изопропил, Сильно теплее стало это точно. Понимаешь какое дело, в VS2013 (c:\Program Files (x86)\Windows Kits\8.1\Include\um\FaxExt.h) я счас подправил, он скомпилировался. И 32-битная 10-ка пустышку съела (файл закушен, сервис запустился). Но мне то надо VS2005, я подправил, теперь эта ругается 1>.\TestRouteExt.cpp(29) : error C2373: 'FaxExtInitializeConfig' : redefinition; different type modifiers 1> C:\Program Files\Microsoft SDKs\Windows\v6.1\Include\faxext.h(114) : see declaration of 'FaxExtInitializeConfig' А там нет WINAPI. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. (я файл из 6.1 прикрепил целиком). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 20:57 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Если в VS2005 сделать так //#include <faxext.h> а содержимое faxext.h скопировать в свой .h + добавить в своем h. файле эту самую WINAPI Код: plaintext 1. 2. 3. 4. 5. 6. то 32-битник компилируется, файл закусывается и сервис на Win10 32-бит уже не падает (на пустышке Win32 VS2005) По идее, каждая SDK под свою OS. 6.1 -кажется Win7 или Виста? но оно и на Win2003 не работало, и в "SDK Win2003" счас глянул тоже нет этой "WINAPI". Ошибки в старых SDK? Короче думаю надо делать этот "фокус с добавлением WINAPI и с правкой заголовочного файла", компилировать нормальную dll и смотреть корректность ее работы на разных 32-битках, предположительно заведется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 21:44 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, в SDK для 8-10 WINAPI ожидаемо прописано ошибка может быть идиотской - орлы из MS просто могли собирать околофаксовое добро указывая опцию компилятора /Gz ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 22:27 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Если в VS2005 сделать так //#include <faxext.h> а содержимое faxext.h скопировать в свой .h + добавить в своем h. файле эту самую WINAPI Код: plaintext 1. 2. 3. 4. 5. 6. Вроде прокатило. Завелась моя dll на 32-битной 10-ке. Счас дистрибутив сделаю аккуратно и пойду смотреть что будет на XP/2003 x86. Изопропилошибка может быть идиотской - орлы из MS просто могли собирать околофаксовое добро указывая опцию компилятора /Gz Мож орлы, а мож козлы. Найдешь? Я не нашел. Оригинальный пример из sdk 7.1 приложен (ничего не менял), в более новых sdk че-то не вижу этих примеров. А ведь эти ж все примеры с упором именно на Win32 писались, и 2005-я студия для них родная. Т.е. имеем заведомо нерабочую поделку (я этого не заметил только потому что ваял на 64-битной 10-ке и контролировал на 16-м сервере). Эх, эти б все доки и API лет 10 назад... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 23:12 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
на XP/2003 x86 На Win2003 x86 -завелась. На XP x86 -вроде тоже, но что-то там не фурычит с RoutingExtension (виснет при выполнении метода), но это к вопросу здесь озвученному думаю отношения не имеет, надо код смотреть и тп. (на xp x64 работает, но это по сути сервер). На 32-битном xp есть ньюансы: там служба факса это System, а не Network Service (начиная с Win2003=NT5.2) Если верить докам, то Extension вообще не должны поддерживаться на клиентских OS. FaxServer.RegisterInboundRoutingExtension method FaxServer.UnregisterInboundRoutingExtension method This property is not supported in Windows XP, and will return the error: FAX_E_NOT_SUPPORTED_ON_THIS_SKU. (так и есть, и на любых Win7/Win10 то же самое) FaxRegisterRoutingExtension function FaxRoutingInstallationCallback callback function Дока по партизански молчит, но на XP/Win7/Win10 также стабильно генерит ошибку, на серверах OK. FaxUnregisterRoutingExtension function Ну эта вообще не поддерживается и опытно-hex-овым путем удалось понять, что нет ее в принципе нигде, ни A ни W, хотя аналогичная FaxUnregisterServiceProvider (в доках даже не упомянутая) очень даже присутствует (кроме XP-32) и вполне таки работоспособна. А суть в том что эта "регистрация" прекрасно прописывается в реестр "ручками" (по образу и подобию), после чего custom-extension абсолютно работоспособен на клиенте (во всяком случае на Win 10 x86/x64 и XP x64 без проблем, на Win7/8.1 не помешало б проверить но предположительно будет OK). Так что думаю и на XP-32 завести можно, пойду поковыряюсь что там не так (забивать на XP почему-то пока не хочу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 01:24 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
На XP x86 -вроде тоже, но что-то там не фурычит с RoutingExtension (виснет при выполнении метода), но это к вопросу здесь озвученному думаю отношения не имеет, надо код смотреть и тп. Нашел причину, понатыкав в Debug текстов. На XP (x86) код (вместе со службой факсов) мертво виснет на строчке (на других OS - даже на Win2003 x86 -не виснет). Убрать - все работает. Код: plaintext 1. 2. Задумка авторов горе-примера из SDK видимо следующая: Routing Method типа выполняется долго: напр. факс конвертируют, пытаются распознать текст, посылают по мылу, печатают. За это типа немеренное время нечто может написать между строк (видимо другой факс принялся, потому что несколько методов для одного задания выполняются я так понял последовательно в порядке приоритетов в одном потоке, видимо еще когда метод включили/выключили - FaxRouteDeviceEnable тоже в лог пишет и т.п.). У меня алгоритм проще: я считываю RoutingInfo, копирую TIFF в другое место (оригинал удаляется при выходе из ф-ции), запускаю другой Exe (.Net, ну не готов я на C e-mail-ы отправлять) через CreateProcess, передав этому exe управление делами (окончания его работы не жду). На все про все согласно логу уходит от 0 до 16 миллисекунд в зависимости от компа и как фишка ляжет. Я вот думаю, вычислять версию OS или м.б. надежнее полностью выкинуть эту CriticalSection и иди она лесом? Потому как понимаю, deadlock схлопотать с этой кухней вероятность ненулевая (даже не на XP), а от случайной строчки (между строк) принципиального вреда не будет, да и вероятность этой случайности стремится к нулю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 03:21 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
или м.б. надежнее полностью выкинуть эту CriticalSection и иди она лесом? Толку от нее конечно немного, но причину понял. У меня, да и в SDK примере используется конструкция Код: 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. Что по сути приводит к выполнению в одном потоке Код: plaintext 1. 2. (два метода, первый из кот. отключен) Я погуглил, люди исследовали, такая комбинация на XP недопустима (висяк обеспечен), на висте и выше пофиг (и видимо на Win2003 тоже) В общем если не выкидывать, то надо ставить EnterCriticalSection в начало ф-ции (до выполнения условия, по кот. можно уйти на Exit). Вот так по любому не виснет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 05:27 |
|
||
|
Fax Service + Extension.Dll. Dll(x64) на x64-все OK, Dll(Win32) на Win32 -вышибает службу
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, а ты развернул на тестовой системе тот же vcredist.exe x86, с библиотеками из которого была собрана твоя библиотека? Что говорит об этой ошибке виндовый лог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 08:57 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39502258&tid=2018104]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
211ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 285ms |
| total: | 599ms |

| 0 / 0 |
