Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Вниз

Проблема с RasEnumConnections   Найти похожие ветки 

 
Lik   (2006-03-30 18:44) [0]

Имеем сервис:

type
 HRasConn = DWORD;
 PRasConn = ^TRasConn;            
 TRasConn = record
   dwSize: DWORD;
   rasConn: HRasConn;
   szEntryName: Array[0..256] Of Char;
   szDeviceType: Array[0..16] Of Char;
   szDeviceName: Array [0..128] Of char;
 end;

var
 RasEnumConnections:
       Function (RASConn: PrasConn; var BufSize: DWord; var Connections: DWord ): DWORD; stdcall;

procedure ServiceCtrlHandler(Opcode : Cardinal);stdcall;
begin
 case Opcode of
   SERVICE_CONTROL_STOP:ServiceStatus.dwCurrentState := SERVICE_STOPPED;
   SERVICE_CONTROL_INTERROGATE :SetServiceStatus (ServiceStatusHandle, ServiceStatus)
 end;
 SetServiceStatus (ServiceStatusHandle, ServiceStatus)
end;

Procedure ServiceProc(dwArgc: DWORD;lpszArgv: Pointer); StdCall;
var
 RConn:array[0..10] of TRasConn;
 a,f:DWord;
 Err:integer;
 l:THandle;
begin
 ServiceStatusHandle:=RegisterServiceCtrlHandler(ServiceName,@ServiceCtrlHandler) ;
 if ServiceStatusHandle=0 then exit;
 ServiceStatus.dwServiceType      := SERVICE_WIN32;
 ServiceStatus.dwControlsAccepted := SERVICE_ACCEPT_STOP;
 ServiceStatus.dwWin32ExitCode           := 0;
 ServiceStatus.dwServiceSpecificExitCode := 0;
 ServiceStatus.dwCheckPoint              := 0;
 ServiceStatus.dwWaitHint                := 0;
 ServiceStatus.dwCurrentState :=SERVICE_RUNNING;
 SetServiceStatus(ServiceStatusHandle,ServiceStatus);

 l:=LoadLibrary("RASAPI32.DLL");
 RasEnumConnections := GetProcAddress(l, "RasEnumConnectionsA");

 a:=SizeOF(RConn);
 f:=0;
 RConn[0].dwSize:=sizeof(TRasConn);
 Err:=RasEnumConnections(@RConn[0],a,f);

 ServiceStatus.dwCurrentState :=SERVICE_Stopped;
 ServiceStatus.dwWin32ExitCode           := 0;
 ServiceStatus.dwServiceSpecificExitCode := 0;
 ServiceStatus.dwCheckPoint              := 0;
 ServiceStatus.dwWaitHint                := 0;
 SetServiceStatus (ServiceStatusHandle,ServiceStatus);
end;

var
 DispatchTable : array [0..1] of TServiceTableEntryA;
begin
   DispatchTable[0].lpServiceName:=ServiceName;
   DispatchTable[0].lpServiceProc:=@ServiceProc;
   DispatchTable[1].lpServiceName:=nil;
   DispatchTable[1].lpServiceProc:=nil;
   StartServiceCtrlDispatcher(DispatchTable[0]);
end.

Здесь RasEnumConnections возвращает чудесное число "-2147467259" . Хотя в обычном exe-шнике функция выдаёт то, что от неё и требуется. Где тут косяк?


 
Сергей М. ©   (2006-03-31 09:10) [1]

Используй RasGetErrorString() для получения текстового описания RAS-ошибки с указанным кодом.


 
Lik   (2006-03-31 15:39) [2]

если тип Err:int64 то функция возвращает число 2147500037 (80004005h). Ошибки с таким кодом не значится.
Пробовал использовать данный код (с RasEnumConnections) в Делфовском сервисе (File > New >  Service Application), функция так же работает исправно. Может что-то инициализировать ещё нужно?... Прошу подсказок, мастера!


 
fellix   (2006-03-31 16:07) [3]

Ответ в Вашем же вопросе: "в Делфовском сервисе ... функция ... работает исправно".
Сравните реализацию сервисов у Вас и в Делфи.
Кстати, попробуйте установить SERVICE_START_PENDING. а уж потом SERVICE_RUNNING.
----------------
P.S. $80004005 - это Active Directory Service Interfaces error.
80004005 == Unspecified error. The cause of the COM object failure is indeterminate by ADSI.


 
Сергей М. ©   (2006-03-31 16:40) [4]


> если тип Err:int64


С какого перепугу Int64-то ?


 
Lik   (2006-03-31 16:44) [5]


> С какого перепугу Int64-то ?

ну или Cardinal, число на выходе то же.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
2-1150963906
Галинка
2006-06-22 12:11
2006.07.09
Автоматизация написания помощи


2-1151083509
resuS
2006-06-23 21:25
2006.07.09
SOCKS прокси сервер 4/5


2-1150624494
T54
2006-06-18 13:54
2006.07.09
непрерывное видео... как ?


1-1148542464
inew
2006-05-25 11:34
2006.07.09
Компонет indy10. Ограничение на размер файла.


2-1151049152
Alex_1qaz_2006
2006-06-23 11:52
2006.07.09
Запуск внешнего приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский