Re: [twsocket] Service dependency problem re-occurred.

2006-12-16 Thread Fastream Technologies
Also, depending on RPCss sometimes fail on some Windows configs which
can run Winsock software! FYI...

On 12/13/06, Arno Garrels <[EMAIL PROTECTED]> wrote:
> Fastream Technologies wrote:
> > Hello,
> >
> > Our clients using Windows 2003 complain that the lastest beta is
> > causing hangs during boot up and then reboots and goes into a loop.
> > This is a HTTP/FTP server installed as system service and running with
> > administrative rights. It depends only to Tcpip. I noticed that when
> > it is trying to run, it blocks alg.exe to execute and this is a cycle
> > of waiting (cyclic dependency).
>
> You can also specify a LoadGroup, that is the name of the load ordering group
> of which your service is a member. The startup program uses load ordering
> groups to load groups of services in a specified order with respect to the
> other groups. The list of load ordering groups is contained in the following
> registry value: 
> HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder
>
> Also check value of property ErrorSeverity (dwErrorControl).
>
> http://msdn.microsoft.com/library/en-us/dllproc/base/createservice.asp?frame=true
>
> http://support.microsoft.com/?scid=kb%3Ben-us%3B102987&x=9&y=13
>
>
> Have you tried a service-depency on RPCSS?
>
> ---
> Arno Garrels [TeamICS]
> http://www.overbyte.be/eng/overbyte/teamics.html
>
>
>
> --
> To unsubscribe or change your settings for TWSocket mailing list
> please goto http://www.elists.org/mailman/listinfo/twsocket
> Visit our website at http://www.overbyte.be
>
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] Service dependency problem re-occurred.

2006-12-13 Thread Fastream Technologies
Thanks, I found the problem:

I was calling the below function to edit service description (which
TServiceApplication cannot do automatically) in OnStart of the
service!

BOOL ReconfigureService(BOOL fDisable, LPSTR lpDesc, const String
&serviceName) // from
// 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/opening_an_scmanager_database.asp
// and 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/changing_a_service_configuration.asp
{
SC_LOCK sclLock;
LPQUERY_SERVICE_LOCK_STATUS lpqslsBuf;
SERVICE_DESCRIPTION sdBuf;
DWORD dwBytesNeeded, dwStartType;
BOOL bSuccess=TRUE;

SC_HANDLE schSCManager;
SC_HANDLE schService;

// Open a handle to the SC Manager database.

schSCManager = OpenSCManager(
NULL,// local machine
NULL,// ServicesActive database
SC_MANAGER_ALL_ACCESS);  // full access rights

if(NULL == schSCManager)
return false;

// Need to acquire database lock before reconfiguring.

sclLock = LockServiceDatabase(schSCManager);

// If the database cannot be locked, report the details.

if (sclLock == NULL)
{
// Exit if the database is not locked by another process.

if (GetLastError() != ERROR_SERVICE_DATABASE_LOCKED)
{
// printf("LockServiceDatabase failed (%d)\n", GetLastError());
return FALSE;
}

// Allocate a buffer to get details about the lock.

lpqslsBuf = (LPQUERY_SERVICE_LOCK_STATUS) LocalAlloc(
LPTR, sizeof(QUERY_SERVICE_LOCK_STATUS)+256);
if (lpqslsBuf == NULL)
{
// printf("LocalAlloc failed (%d)\n", GetLastError());
return FALSE;
}

// Get and print the lock status information.

if (!QueryServiceLockStatus(
schSCManager,
lpqslsBuf,
sizeof(QUERY_SERVICE_LOCK_STATUS)+256,
&dwBytesNeeded) )
{
// printf("QueryServiceLockStatus failed (%d)", GetLastError());
return FALSE;
}

//if (lpqslsBuf->fIsLocked)
// printf("Locked by: %s, duration: %d seconds\n",
//lpqslsBuf->lpLockOwner,
//lpqslsBuf->dwLockDuration);
//else
// printf("No longer locked\n");

LocalFree(lpqslsBuf);
}

// The database is locked, so it is safe to make changes.

// Open a handle to the service.

schService = OpenService(
schSCManager,   // SCManager database
serviceName.c_str(), // name of service
SERVICE_CHANGE_CONFIG); // need CHANGE access
if (schService == NULL)
{
// printf("OpenService failed (%d)\n", GetLastError());
return FALSE;
}

dwStartType = SERVICE_AUTO_START; //(fDisable) ? SERVICE_DISABLED
: SERVICE_DEMAND_START;

// Make the changes.

if (! ChangeServiceConfig(
schService,// handle of service
SERVICE_NO_CHANGE, // service type: no change
dwStartType,   // change service start type
SERVICE_NO_CHANGE, // error control: no change
NULL,  // binary path: no change
NULL,  // load order group: no change
NULL,  // tag ID: no change
NULL,  // dependencies: no change
NULL,  // account name: no change
NULL,  // password: no change
NULL) )// display name: no change
{
// printf("ChangeServiceConfig failed (%d)\n", GetLastError());
bSuccess = FALSE;
}
else
// printf("ChangeServiceConfig succeeded.\n");

sdBuf.lpDescription = lpDesc;

if( !ChangeServiceConfig2(
schService, // handle to service
SERVICE_CONFIG_DESCRIPTION, // change: description
&sdBuf) )   // value: new description
{
// printf("ChangeServiceConfig2 failed\n");
bSuccess = FALSE;
}
else
// printf("ChangeServiceConfig2 succeeded\n");

// Release the database lock.

UnlockServiceDatabase(sclLock);

// Close the handle to the service.

CloseServiceHandle(schService);
return bSuccess;
}
//---

It simply got the service hanging during system boot if service type
was auto. Just FYI.

BTW, the function is useful in adding the description but it should be
called after install or a few mins.

Best Regards,

SZ

On 12/13/06, Arno Garrels <[EMAIL PROTECTED]> wrote:
> Fastream Technologies wrote:
> > Hello,
> >
> > Our clients using Windows 2003 complain that the lastest beta is
> > causing hangs during boot up and then reboots and goes into a loop.
> > This is a HTTP/FTP server installed as system service and running with
> > administrative rights. It depends only to Tcpip. I noticed tha

Re: [twsocket] Service dependency problem re-occurred.

2006-12-13 Thread Arno Garrels
Fastream Technologies wrote:
> Hello,
> 
> Our clients using Windows 2003 complain that the lastest beta is
> causing hangs during boot up and then reboots and goes into a loop.
> This is a HTTP/FTP server installed as system service and running with
> administrative rights. It depends only to Tcpip. I noticed that when
> it is trying to run, it blocks alg.exe to execute and this is a cycle
> of waiting (cyclic dependency). 

You can also specify a LoadGroup, that is the name of the load ordering group
of which your service is a member. The startup program uses load ordering
groups to load groups of services in a specified order with respect to the
other groups. The list of load ordering groups is contained in the following
registry value: 
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder

Also check value of property ErrorSeverity (dwErrorControl). 

http://msdn.microsoft.com/library/en-us/dllproc/base/createservice.asp?frame=true

http://support.microsoft.com/?scid=kb%3Ben-us%3B102987&x=9&y=13


Have you tried a service-depency on RPCSS?

---
Arno Garrels [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html

  

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be