исключение "отказано в доступе"
Atom Ответить
03.11.2010


Доброго времени суток. Помогите решить проблему. На компе установлен SmartCom 2. при тестировании примера SampleSmart (stocksharp 2.4) получаю исключение "отказано в доступе", при тестировании примера SampleSmarConsole удаётся подключиться один раз, при последующих попытках подключения получаю аналогичное исключение. Проблема с консольным приложением "решается" перезагрузкой компьютера. (Подключаюсь к демосерверу, логин и пароль ввожу корректно. )

Теги:


Спасибо:




21 Ответов
Alexander

Фотография
Дата: 03.11.2010
Ответить


alexandro
Доброго времени суток. Помогите решить проблему. На компе установлен SmartCom 2. при тестировании примера SampleSmart (stocksharp 2.4) получаю исключение "отказано в доступе", при тестировании примера SampleSmarConsole удаётся подключиться один раз, при последующих попытках подключения получаю аналогичное исключение. Проблема с консольным приложением "решается" перезагрузкой компьютера. (Подключаюсь к демосерверу, логин и пароль ввожу корректно. )



Версию SmartCom 2.0 начал поддерживать лишь Stock# 2.5.
Попробуй с ним потестировать
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 03.11.2010
Ответить


alexandro
Доброго времени суток. Помогите решить проблему. На компе установлен SmartCom 2. при тестировании примера SampleSmart (stocksharp 2.4) получаю исключение "отказано в доступе", при тестировании примера SampleSmarConsole удаётся подключиться один раз, при последующих попытках подключения получаю аналогичное исключение. Проблема с консольным приложением "решается" перезагрузкой компьютера. (Подключаюсь к демосерверу, логин и пароль ввожу корректно. )


Приведите полный текст ошибки. Есть подозрение, что учетка, из под которой открывается программа, не имеет доступ к процессу Смарта. А это необходимо. Или понижайте учетку для смарта, или запускайте прогу например из под админа. Причина - SmartTrader перед подсоединение перезапускает процесс SmartCOM (из-за того, что тот любит мертво зависать).
Спасибо:

alexandro

Фотография
Дата: 08.11.2010
Ответить


Всем спасибо за помощь! Всё оказалось проще, чем я думал. Висел процесс смарткома, который и блокировал мои коннекты.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 08.11.2010
Ответить


alexandro
Всем спасибо за помощь! Всё оказалось проще, чем я думал. Висел процесс смарткома, который и блокировал мои коннекты.


SmartTrader умеет отслеживать такие вещи. Конкретнее, смарт ком завис в процессе работы или в момент коннекта?
Спасибо:

alexandro

Фотография
Дата: 15.11.2010
Ответить


Цитата:
SmartTrader умеет отслеживать такие вещи. Конкретнее, смарт ком завис в процессе работы или в момент коннекта?

SmartTrader не был запущен в тот момент когда я тестировал код код примера SampleSmart. Процесс SmartCom2 оставался висеть после завершения работы примера SampleSmart.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.11.2010
Ответить


alexandro
Цитата:
SmartTrader умеет отслеживать такие вещи. Конкретнее, смарт ком завис в процессе работы или в момент коннекта?

SmartTrader не был запущен в тот момент когда я тестировал код код примера SampleSmart. Процесс SmartCom2 оставался висеть после завершения работы примера SampleSmart.


SmartTrader создается, но не запускается. Имелось ввиду СмартКОМ? Тогда SmartTrader в методе Connect должен запустить сам SmartCOM.
Спасибо:

xtonic

Фотография
Дата: 13.12.2010
Ответить


Здравствуйте, столкнулся с такой же ошибкой.
Суть в том что при первом запуске примера все вроде работает, потом я нажимаю "отключиться", закрываю окно примера,
но в процессах остается висеть smartcom2.exe и при повторном запуске робота получаю "откзано в доступе", приходится
каждый раз убивать вручную этот процесс.
В примере вроде прописан такой кусок, может еще что-то добавить чтобы smartcom вычищался ?

Код

protected override void OnClosing(CancelEventArgs e)
        {
if (_manager != null)
_manager.Dispose();

if (_trader != null)
{
_trader.StopExport();
_trader.Dispose();
}

base.OnClosing(e);
}

Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.12.2010
Ответить


xtonic

В примере вроде прописан такой кусок, может еще что-то добавить чтобы smartcom вычищался ?


Дать роботу права, чтобы он мог убивать процесс СмартКом.
Спасибо:

xtonic

Фотография
Дата: 14.12.2010
Ответить


Прошу прощения за нубский вопрос, но как это сделать ? Поиск по интернету скуп на информацию,
все предложенные там способы либо не работают, либо совсем какие-то экзотические.
Вообще страано это выглядит что робот сам создает процесс, а потом не может его погасить.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.12.2010
Ответить


xtonic
Прошу прощения за нубский вопрос, но как это сделать ? Поиск по интернету скуп на информацию,
все предложенные там способы либо не работают, либо совсем какие-то экзотические.


Какая ОС и какие решения были?

xtonic

Вообще страано это выглядит что робот сам создает процесс, а потом не может его погасить.


Так устроен COM сервер.
Спасибо:

xtonic

Фотография
Дата: 15.12.2010
Ответить


ОС XP, пробовал давать права через process explorer, также была рекомендация написать сервис, который будет убивать
комовский процесс, но это мне показалось уже слишком.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.12.2010
Ответить


xtonic
ОС XP, пробовал давать права через process explorer, также была рекомендация написать сервис, который будет убивать
комовский процесс, но это мне показалось уже слишком.


Работайте из под админского аккаунта.
Спасибо:

ig0r

Фотография
Дата: 31.01.2011
Ответить


У меня тоже выпадает System.ViolationException Попытка чтения или записи в защищенную память.
но не при коннекте а при попытке получить историю.
при этом соединение успешно проходит, выставляются ордера..

операционка XP SP3
работаю под админом.

Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.01.2011
Ответить


ig0r Перейти
У меня тоже выпадает System.ViolationException Попытка чтения или записи в защищенную память.
но не при коннекте а при попытке получить историю.
при этом соединение успешно проходит, выставляются ордера..

операционка XP SP3
работаю под админом.



Картинку не видно, но тип исключения вижу впервые. Это пример или своя программа?
Спасибо:

ig0r

Фотография
Дата: 01.02.2011
Ответить


Цитата:
Картинку не видно, но тип исключения вижу впервые. Это пример или своя программа?


Это пример SampleSmartSma

Писал и свой пример на основе SampleSmartConsole, добавил получение исторических данных и он тоже стал падать с таким исключением.

Ниже стектрейс ошибки при работе стандартного примера SampleSmartSma.
Исключение вызывает метод:
_trader.RegisterHistoryData(_lkoh, SmartTimeFrames.Minute5, new Range<DateTime>(DateTime.Today - TimeSpan.FromDays(5), _trader.MarketTime));


System.AccessViolationException. Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
в StClientLib.StServerClass.GetBars(String symbol, StBarInterval interval, DateTime since, Int32 count)
в Ecng.Trading.Smart.SmartComWrapper.<>c__DisplayClass6c.<RegisterHistoryBars>b__6b(StServer server)
в Ecng.Trading.Smart.SmartComWrapper.Do(Action`1 action)
в Ecng.Trading.Smart.SmartComWrapper.RegisterHistoryBars(String securityId, SmartTimeFrames timeFrame, DateTime from, Int32 count)
в Ecng.Trading.Smart.SmartTrader.RegisterHistoryData(Security security, SmartTimeFrames timeFrame, DateTime from, Int32 count, SmartHistoryDirections direction)
в Ecng.Trading.Smart.SmartTrader.RegisterHistoryData(Security security, SmartTimeFrames timeFrame, Range`1 range)
в SampleSmartSMA.MainWindow.Start_Click(Object sender, RoutedEventArgs e) в D:\Proj\Trading\StockSharp_2.6.2_Sources\Sources\SampleSmartSMA\MainWindow.xaml.cs:строка 304
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
в System.Windows.Controls.Primitives.ButtonBase.OnClick()
в System.Windows.Controls.Button.OnClick()
в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
в System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
в System.Windows.UIElement.CrackMouseButtonEventAndReRaiseEvent(DependencyObject sender, MouseButtonEventArgs e)
в System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
в System.Windows.Input.InputManager.ProcessStagingArea()
в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)

Некоторое время назад попытался использовать Stock# в своем проекте, но столкнулся с этой проблемой и решил писать
робота на основе SmartCOM без использования Stock#. Но со временем опять возникло желание использовать вашу разработку,
и опять таже проблема меня останавливает, сам не могу найти причину, помогите разобраться? :-)
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.02.2011
Ответить


ig0r Перейти
Цитата:
Картинку не видно, но тип исключения вижу впервые. Это пример или своя программа?


Это пример SampleSmartSma

System.AccessViolationException. Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
в StClientLib.StServerClass.GetBars(String symbol, StBarInterval interval, DateTime since, Int32 count)

Некоторое время назад попытался использовать Stock# в своем проекте, но столкнулся с этой проблемой и решил писать
робота на основе SmartCOM без использования Stock#.


Выделенное говорит о том, что ошибка в СмартКом. Так что переход вряд ли поможет.

Приведи значения, что Вы передаете в SmartTrader.RegisterHistoryData(Security security, SmartTimeFrames timeFrame, Range`1 range)
Спасибо:

ig0r

Фотография
Дата: 01.02.2011
Ответить


Mikhail Sukhov Перейти

Приведи значения, что Вы передаете в SmartTrader.RegisterHistoryData(Security security, SmartTimeFrames timeFrame, Range`1 range)


Вызов выглядит так:
_trader.RegisterHistoryData(_lkoh, SmartTimeFrames.Minute5, new Range<DateTime>(DateTime.Today - TimeSpan.FromDays(5), _trader.MarketTime));

_lkoh - Security
(инициализируется самим примером, ну судя по всему значение нормальное т.к. предшествующая строка
_trader.RegisterTrades(_lkoh); - выполняется)

DateTime.Today = "01.02.2011 0:00:00"
_trader.MarketTime = "01.02.2011 14:16:40"

Вобщем все значения по умолчанию, как были в примере, я ничего не менял.


Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.02.2011
Ответить


ig0r Перейти

Вобщем все значения по умолчанию, как были в примере, я ничего не менял.


Запустил пример, отработал штатно. Что за сервер? СмартКом последний установлен?
Спасибо:

ig0r

Фотография
Дата: 01.02.2011
Ответить


Mikhail Sukhov Перейти
ig0r Перейти

Вобщем все значения по умолчанию, как были в примере, я ничего не менял.


Запустил пример, отработал штатно. Что за сервер? СмартКом последний установлен?



Демо сервер.
Смартком 2 стоит, насколько последний не знаю.. Попробую сейчас качнуть последний и переустановить.

Добавлено:
Снес SmartTrade, SuperTrade, SmartCOM2
заново установил SmartCOM2

Проблема решилась. Теперь работает.
Спасибо.
Спасибо:

a.dobryn

Фотография
Дата: 30.05.2011
Ответить


Наткнулась на такую же проблему, причем проявляется она только в связке с обычным квиком, с квик джуниором все в порядке. Версия одинаковая. Ошибка вылетает при попытке DDE-коннекта, где конкретнее, проследить не могу, так как это дело запускается в винде 2003 сервер по удаленке, у меня на компьютере с XP SP2 все в порядке
Спасибо:

a.dobryn

Фотография
Дата: 30.05.2011
Ответить


мда, проблема решена - надо было при старте коннекта DDE в квике переходить на главную вкладку
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy