mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
257 lines
5.6 KiB
257 lines
5.6 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
svcinfo.hxx
|
|
|
|
Abstract:
|
|
|
|
contains class definitions for service location classes.
|
|
|
|
Author:
|
|
|
|
Madan Appiah (madana) 15-May-1995
|
|
|
|
Environment:
|
|
|
|
User Mode - Win32
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _SVCINFO_
|
|
#define _SVCINFO_
|
|
|
|
/*++
|
|
|
|
Class Description:
|
|
|
|
Class definition for internet service info.
|
|
|
|
Private Member functions:
|
|
|
|
ComputeServiceInfoSize : computes the size of embedded service info
|
|
buffer.
|
|
|
|
CopyServiceInfo : copies the service info structure to emdedded
|
|
service info buffer.
|
|
|
|
Public Member functions:
|
|
|
|
EMBED_SERVICE_INFO : constructs a service info object.
|
|
|
|
~EMBED_SERVICE_INFO : destructs a service info object.
|
|
|
|
GetStatus : returns status of the object.
|
|
|
|
SetServiceInfo : updates the service info object.
|
|
|
|
SetServiceState :updates service state in the service info object.
|
|
|
|
GetServiceMask : retrieves service mask.
|
|
|
|
GetServiceInfoLength : retrieves the size of the embedded service
|
|
info.
|
|
|
|
GetServiceInfoBuffer : retrieves the buffer pointer of the embedded
|
|
service info.
|
|
|
|
GetServiceInfo : unmarshells the embedded buffer and retrieves service
|
|
info structure.
|
|
|
|
--*/
|
|
class EMBED_SERVICE_INFO {
|
|
|
|
private:
|
|
|
|
DWORD _Status;
|
|
DWORD _ServiceInfoLength;
|
|
LPBYTE _ServiceInfoBuffer;
|
|
DWORD _AllottedBufferSize;
|
|
|
|
INET_SERVICE_STATE *_ServiceState;
|
|
LPSTR _ServiceComment;
|
|
ULONGLONG UNALIGNED *_ServiceMask;
|
|
|
|
CRITICAL_SECTION _ServiceObjCritSect;
|
|
|
|
DWORD ComputeServiceInfoSize( LPINET_SERVICE_INFO ServiceInfo );
|
|
VOID CopyServiceInfo( LPINET_SERVICE_INFO ServiceInfo );
|
|
|
|
VOID LockServiceObj( VOID ) {
|
|
EnterCriticalSection( &_ServiceObjCritSect );
|
|
}
|
|
|
|
VOID UnlockServiceObj( VOID ) {
|
|
LeaveCriticalSection( &_ServiceObjCritSect );
|
|
}
|
|
|
|
public:
|
|
|
|
EMBED_SERVICE_INFO( LPINET_SERVICE_INFO ServiceInfo );
|
|
EMBED_SERVICE_INFO( LPBYTE InfoBuffer, DWORD InfoBufferLength );
|
|
|
|
~EMBED_SERVICE_INFO( VOID );
|
|
|
|
DWORD GetStatus( VOID ) {
|
|
return( _Status );
|
|
}
|
|
|
|
DWORD SetServiceInfo( LPINET_SERVICE_INFO ServiceInfo );
|
|
VOID SetServiceState( INET_SERVICE_STATE SvcState ) {
|
|
*_ServiceState = SvcState;
|
|
return;
|
|
}
|
|
|
|
ULONGLONG GetServiceMask( VOID ) {
|
|
return( *_ServiceMask );
|
|
}
|
|
|
|
DWORD GetServiceInfoLength( VOID ) {
|
|
return( _ServiceInfoLength );
|
|
}
|
|
|
|
DWORD GetServiceInfoBuffer(
|
|
LPBYTE Buffer,
|
|
DWORD BufferLength,
|
|
DWORD *ReturnBufferLength ) {
|
|
|
|
LockServiceObj();
|
|
if( BufferLength < _ServiceInfoLength ) {
|
|
UnlockServiceObj();
|
|
return( ERROR_INSUFFICIENT_BUFFER );
|
|
}
|
|
|
|
memcpy(Buffer, _ServiceInfoBuffer, _ServiceInfoLength );
|
|
*ReturnBufferLength = _ServiceInfoLength;
|
|
|
|
UnlockServiceObj();
|
|
return( ERROR_SUCCESS );
|
|
}
|
|
|
|
|
|
DWORD GetServiceInfo( LPINET_SERVICE_INFO *ServiceInfo );
|
|
}
|
|
|
|
typedef EMBED_SERVICE_INFO, *LPSERVICE_OBJECT;
|
|
|
|
//
|
|
// service object list entry.
|
|
//
|
|
|
|
typedef struct _EMBED_SERVICE_ENTRY {
|
|
LIST_ENTRY NextEntry ;
|
|
LPSERVICE_OBJECT ServiceObject;
|
|
} EMBED_SERVICE_ENTRY, *LPEMBED_SERVICE_ENTRY;
|
|
|
|
/*++
|
|
|
|
Class Description:
|
|
|
|
Class definition for internet server info.
|
|
|
|
Private Member functions:
|
|
|
|
IsServiceEntryExist : finds a service is in the server services list.
|
|
|
|
Public Member functions:
|
|
|
|
EMBED_SERVER_INFO : constructs a server info object.
|
|
|
|
~EMBED_SERVER_INFO : destructs a server info object.
|
|
|
|
GetStatus : returns status of the object.
|
|
|
|
SetServerLoad : sets server load value in the server info object.
|
|
|
|
AddService : adds a new service or updates the info existing server in
|
|
the server info object.
|
|
|
|
RemoveService :removes a service from the server info object.
|
|
|
|
SetServiceState : sets the state of the existing service in the server
|
|
info object.
|
|
|
|
ComputeResponseLength : computes the length of the response message
|
|
(containing server info and all services info in the embeded
|
|
formatted) sent to a client.
|
|
|
|
MakeResponseMessage : makes a response message sent to a client.
|
|
|
|
--*/
|
|
class EMBED_SERVER_INFO {
|
|
|
|
private:
|
|
|
|
DWORD _Status;
|
|
DWORD _ServerInfoLength;
|
|
LPBYTE _ServerInfoBuffer;
|
|
DWORD _AllottedBufferSize;
|
|
|
|
INET_VERSION_NUM *_VersionNum;
|
|
DWORD *_ServerLoad;
|
|
ULONGLONG UNALIGNED *_ServicesMask;
|
|
LPSTR _ServerName;
|
|
|
|
DWORD *_NumServices;
|
|
LIST_ENTRY _ServicesList;
|
|
|
|
CRITICAL_SECTION _ServerObjCritSect;
|
|
|
|
BOOL IsServiceEntryExist(
|
|
ULONGLONG ServiceMask,
|
|
LPEMBED_SERVICE_ENTRY *ServiceEntry
|
|
);
|
|
|
|
VOID LockServerObj( VOID ) {
|
|
EnterCriticalSection( &_ServerObjCritSect );
|
|
}
|
|
|
|
VOID UnlockServerObj( VOID ) {
|
|
LeaveCriticalSection( &_ServerObjCritSect );
|
|
}
|
|
|
|
public:
|
|
|
|
EMBED_SERVER_INFO(
|
|
WORD MajorVersion,
|
|
WORD MinorVersion,
|
|
LPSTR ServerName );
|
|
|
|
EMBED_SERVER_INFO(
|
|
LPBYTE ResponseBuffer,
|
|
DWORD ResponseBufferLength );
|
|
|
|
~EMBED_SERVER_INFO( VOID );
|
|
|
|
DWORD GetStatus( VOID ) {
|
|
return( _Status );
|
|
}
|
|
|
|
VOID SetServerLoad ( DWORD SrvLoad ) {
|
|
*_ServerLoad = SrvLoad;
|
|
return;
|
|
}
|
|
|
|
ULONGLONG GetServicesMask( VOID ) {
|
|
return(*_ServicesMask);
|
|
}
|
|
|
|
DWORD AddService ( LPINET_SERVICE_INFO ServiceInfo );
|
|
DWORD RemoveService( ULONGLONG ServiceMask );
|
|
DWORD SetServiceState(
|
|
ULONGLONG ServiceMask,
|
|
INET_SERVICE_STATE ServiceState );
|
|
|
|
DWORD ComputeResponseLength( VOID );
|
|
DWORD MakeResponseMessage( LPBYTE MessageBuffer, DWORD BufferLength );
|
|
|
|
DWORD GetServerInfo( LPINET_SERVER_INFO *ServerInfo );
|
|
};
|
|
|
|
#endif // _SVCINFO_
|
|
|
|
|