typedef struct _SERVICE_RECORD
{
struct _SERVICE_RECORD *Prev; // linked list
struct _SERVICE_RECORD *Next; // linked list
LPWSTR ServiceName; // points to service name
LPWSTR DisplayName; // points to display name
ULONG ResumeNum; // Ordered number for this rec
ULONG ServerAnnounce; // Server announcement bit flags
ULONG Signature; // Identifies this as a service record.
ULONG UseCount; // How many open handles to service
ULONG StatusFlag; // status(delete,update...)
union {
//LPIMAGE_RECORD ImageRecord; // Points to image record
void* ImageRecord;
LPWSTR ObjectName; // Points to driver object name
};
SERVICE_STATUS ServiceStatus; // see winsvc.h
ULONG StartType; // AUTO, DEMAND, etc.
ULONG ErrorControl; // NORMAL, SEVERE, etc.
ULONG Tag; // DWORD Id for the service,0=none.
//LPDEPEND_RECORD StartDepend;
//LPDEPEND_RECORD StopDepend;
void* StartDepend;
void* StopDepend;
LPWSTR Dependencies;
PSECURITY_DESCRIPTOR ServiceSd;
ULONG StartError;
ULONG StartState;
//LPLOAD_ORDER_GROUP MemberOfGroup;
//LPLOAD_ORDER_GROUP RegistryGroup;
void* MemberOfGroup;
void* RegistryGroup;
} SERVICE_RECORD, *PSERVICE_RECORD, *LPSERVICE_RECORD;