summaryrefslogblamecommitdiffstats
path: root/private/ole32/oleui/datapkt.h
blob: a6feb52eb76b0223ceb8bcfb57a752183ac97771 (plain) (tree)












































































































































                                                                             
//+---------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1993 - 1994.
//
//  File:       datapkt.h
//
//  Contents:   Defines the class CDataPacket to manages diverse data
//              packets needing to be written to various databases
//
//  Classes:    
//
//  Methods:    
//
//  History:    23-Apr-96   BruceMa    Created.
//
//----------------------------------------------------------------------


#ifndef _DATAPKT_H_
#define _DATAPKT_H_

typedef enum tagPACKETTYPE {Empty, NamedValueSz, NamedValueDword, SingleACL, 
                            RegKeyACL, Password, ServiceIdentity} PACKETTYPE;

typedef struct
{
    HKEY   hRoot;
    TCHAR *szKeyPath;
    TCHAR *szValueName;
    TCHAR *szValue;
} SNamedValueSz, *PNamedValueSz;

typedef struct
{
    HKEY   hRoot;
    TCHAR *szKeyPath;
    TCHAR *szValueName;
    DWORD  dwValue;
} SNamedValueDword, *PNamedValueDword;

typedef struct
{
    HKEY   hRoot;
    TCHAR *szKeyPath;
    TCHAR *szValueName;
    SECURITY_DESCRIPTOR *pSec;
} SSingleACL, *PSingleACL;


typedef struct
{ 
    HKEY                 hKey;
    HKEY                *phClsids;
    unsigned             cClsids;
    TCHAR               *szTitle;
    SECURITY_DESCRIPTOR *pSec;
    SECURITY_DESCRIPTOR *pSecOrig;
} SRegKeyACL, *PRegKeyACL;


typedef struct
{
    TCHAR *szPassword;
    CLSID  appid;
} SPassword, *PPassword;


typedef struct
{
    TCHAR *szServiceName;
    TCHAR *szIdentity;
} SServiceIdentity, *PServiceIdentity;


class CDataPacket
{
 public:
             CDataPacket(void);
             
             CDataPacket(HKEY   hRoot,
                         TCHAR *szKeyPath,
                         TCHAR *szValueName,
                         TCHAR *szValue);
             
             CDataPacket(HKEY   hRoot,
                         TCHAR *szKeyPath,
                         TCHAR *szValueName,
                         DWORD  dwValue);
             
             CDataPacket(HKEY   hRoot,
                         TCHAR *szKeyPath,
                         TCHAR *szValueName,
                         SECURITY_DESCRIPTOR *pSec,
                         BOOL   fSelfRelative);
             
             CDataPacket(HKEY     hKey,
                         HKEY    *phClsids,
                         unsigned cClsids,
                         TCHAR   *szTitle,
                         SECURITY_DESCRIPTOR *pSecOrig,
                         SECURITY_DESCRIPTOR *pSec,
                         BOOL   fSelfRelative);
             
             CDataPacket(TCHAR *szPassword,
                         CLSID apid);
             
             CDataPacket(TCHAR *szServiceName,
                         TCHAR *szIdentity);
             
             CDataPacket(PACKETTYPE pktType,
                         HKEY       hRoot,
                         TCHAR     *szKeyPath,
                         TCHAR     *szValueName);
             
	void ChgSzValue(TCHAR *szValue);
             
	void ChgDwordValue(DWORD dwValue);
             
	void ChgACL(SECURITY_DESCRIPTOR *pSec, BOOL fSelfRelative);
             
	void ChgPassword(TCHAR *szPassword);
             
	void ChgSrvIdentity(TCHAR *szIdentity);

    
    PACKETTYPE tagType;
    BOOL       fDirty;
    BOOL       fDelete;
    union
    {
        SNamedValueSz    nvsz;
        SNamedValueDword nvdw;
        SSingleACL       acl;
        SRegKeyACL       racl;
        SPassword        pw;
        SServiceIdentity si;
    } pkt;
};

#endif // _DATAPKT_H_