Главная страница
    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.009 c
2-1150997598
Hanzo
2006-06-22 21:33
2006.07.09
Работа с кодировкой S-jis.


15-1150086213
Александр Иванов
2006-06-12 08:23
2006.07.09
Модальное окно не закрывается при нажатии Ctrl+F4


2-1150793558
dest81
2006-06-20 12:52
2006.07.09
web


3-1147330152
Ярослав
2006-05-11 10:49
2006.07.09
ProgressBar на время выполнения запроса


2-1150701504
Crazy monkey
2006-06-19 11:18
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский