Repository URL to install this package:
Version:
3.0.0 ▾
|
{******************************************************************************}
{ }
{ Security Service Attachements API interface Unit for Object Pascal }
{ }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
{ Corporation. All Rights Reserved. }
{ }
{ The original file is: scesvc.h, released June 2000. The original Pascal }
{ code is: SceSvc.pas, released December 2000. The initial developer of the }
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
{ }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
{ Marcel van Brakel. All Rights Reserved. }
{ }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project JEDI }
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
{ }
{ The contents of this file are used with permission, subject to the Mozilla }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
// $Id: JwaSceSvc.pas,v 1.5 2007/09/05 11:58:52 dezipaitor Exp $
{$IFNDEF JWA_OMIT_SECTIONS}
unit JwaSceSvc;
{$WEAKPACKAGEUNIT}
{$ENDIF JWA_OMIT_SECTIONS}
{$HPPEMIT ''}
{$HPPEMIT '#include "scesvc.h"'}
{$HPPEMIT ''}
{$HPPEMIT 'typedef SCESVC_HANDLE *PSCESVC_HANDLE'}
{$HPPEMIT ''}
{$IFNDEF JWA_OMIT_SECTIONS}
{$I jediapilib.inc}
interface
uses
JwaWinType;
{$ENDIF JWA_OMIT_SECTIONS}
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
type
SCESTATUS = DWORD;
{$EXTERNALSYM SCESTATUS}
const
SCESTATUS_SUCCESS = 0;
{$EXTERNALSYM SCESTATUS_SUCCESS}
SCESTATUS_INVALID_PARAMETER = 1;
{$EXTERNALSYM SCESTATUS_INVALID_PARAMETER}
SCESTATUS_RECORD_NOT_FOUND = 2;
{$EXTERNALSYM SCESTATUS_RECORD_NOT_FOUND}
SCESTATUS_INVALID_DATA = 3;
{$EXTERNALSYM SCESTATUS_INVALID_DATA}
SCESTATUS_OBJECT_EXIST = 4;
{$EXTERNALSYM SCESTATUS_OBJECT_EXIST}
SCESTATUS_BUFFER_TOO_SMALL = 5;
{$EXTERNALSYM SCESTATUS_BUFFER_TOO_SMALL}
SCESTATUS_PROFILE_NOT_FOUND = 6;
{$EXTERNALSYM SCESTATUS_PROFILE_NOT_FOUND}
SCESTATUS_BAD_FORMAT = 7;
{$EXTERNALSYM SCESTATUS_BAD_FORMAT}
SCESTATUS_NOT_ENOUGH_RESOURCE = 8;
{$EXTERNALSYM SCESTATUS_NOT_ENOUGH_RESOURCE}
SCESTATUS_ACCESS_DENIED = 9;
{$EXTERNALSYM SCESTATUS_ACCESS_DENIED}
SCESTATUS_CANT_DELETE = 10;
{$EXTERNALSYM SCESTATUS_CANT_DELETE}
SCESTATUS_PREFIX_OVERFLOW = 11;
{$EXTERNALSYM SCESTATUS_PREFIX_OVERFLOW}
SCESTATUS_OTHER_ERROR = 12;
{$EXTERNALSYM SCESTATUS_OTHER_ERROR}
SCESTATUS_ALREADY_RUNNING = 13;
{$EXTERNALSYM SCESTATUS_ALREADY_RUNNING}
SCESTATUS_SERVICE_NOT_SUPPORT = 14;
{$EXTERNALSYM SCESTATUS_SERVICE_NOT_SUPPORT}
SCESTATUS_MOD_NOT_FOUND = 15;
{$EXTERNALSYM SCESTATUS_MOD_NOT_FOUND}
SCESTATUS_EXCEPTION_IN_SERVER = 16;
{$EXTERNALSYM SCESTATUS_EXCEPTION_IN_SERVER}
SCESTATUS_NO_TEMPLATE_GIVEN = 17;
{$EXTERNALSYM SCESTATUS_NO_TEMPLATE_GIVEN}
SCESTATUS_NO_MAPPING = 18;
{$EXTERNALSYM SCESTATUS_NO_MAPPING}
SCESTATUS_TRUST_FAIL = 19;
{$EXTERNALSYM SCESTATUS_TRUST_FAIL}
type
PSCESVC_CONFIGURATION_LINE = ^SCESVC_CONFIGURATION_LINE;
{$EXTERNALSYM PSCESVC_CONFIGURATION_LINE}
_SCESVC_CONFIGURATION_LINE_ = record
Key: LPTSTR;
Value: LPTSTR;
ValueLen: DWORD; // number of bytes
end;
{$EXTERNALSYM _SCESVC_CONFIGURATION_LINE_}
SCESVC_CONFIGURATION_LINE = _SCESVC_CONFIGURATION_LINE_;
{$EXTERNALSYM SCESVC_CONFIGURATION_LINE}
TScesvcConfigurationLine = SCESVC_CONFIGURATION_LINE;
PScesvcConfigurationLine = PSCESVC_CONFIGURATION_LINE;
PSCESVC_CONFIGURATION_INFO = ^SCESVC_CONFIGURATION_INFO;
{$EXTERNALSYM PSCESVC_CONFIGURATION_INFO}
_SCESVC_CONFIGURATION_INFO_ = record
Count: DWORD;
Lines: PSCESVC_CONFIGURATION_INFO;
end;
{$EXTERNALSYM _SCESVC_CONFIGURATION_INFO_}
SCESVC_CONFIGURATION_INFO = _SCESVC_CONFIGURATION_INFO_;
{$EXTERNALSYM SCESVC_CONFIGURATION_INFO}
TScesvcConfigurationInfo = SCESVC_CONFIGURATION_INFO;
PScesvcConfigurationInfo = PSCESVC_CONFIGURATION_INFO;
SCE_HANDLE = PVOID;
{$EXTERNALSYM SCE_HANDLE}
SCE_ENUMERATION_CONTEXT = ULONG;
{$EXTERNALSYM SCE_ENUMERATION_CONTEXT}
PSCE_ENUMERATION_CONTEXT = ^SCE_ENUMERATION_CONTEXT;
{$EXTERNALSYM PSCE_ENUMERATION_CONTEXT}
_SCESVC_INFO_TYPE = (
SceSvcConfigurationInfo,
SceSvcMergedPolicyInfo,
SceSvcAnalysisInfo,
SceSvcInternalUse); // !!!do not use this type!!!
{$EXTERNALSYM _SCESVC_INFO_TYPE}
SCESVC_INFO_TYPE = _SCESVC_INFO_TYPE;
{$EXTERNALSYM SCESVC_INFO_TYPE}
TScesvcInfoType = _SCESVC_INFO_TYPE;
const
SCE_ROOT_PATH = 'Software\Microsoft\Windows NT\CurrentVersion\SeCEdit';
{$EXTERNALSYM SCE_ROOT_PATH}
SCE_ROOT_SERVICE_PATH = SCE_ROOT_PATH + '\SvcEngs';
{$EXTERNALSYM SCE_ROOT_SERVICE_PATH}
type
SCESVC_HANDLE = PVOID;
{$EXTERNALSYM SCESVC_HANDLE}
PSCESVC_HANDLE = ^SCESVC_HANDLE;
{$NODEFINE PSCESVC_HANDLE}
PSCESVC_ANALYSIS_LINE = ^SCESVC_ANALYSIS_LINE;
{$EXTERNALSYM PSCESVC_ANALYSIS_LINE}
_SCESVC_ANALYSIS_LINE_ = record
Key: LPTSTR;
Value: PBYTE;
ValueLen: DWORD; // number of bytes
end;
{$EXTERNALSYM _SCESVC_ANALYSIS_LINE_}
SCESVC_ANALYSIS_LINE = _SCESVC_ANALYSIS_LINE_;
{$EXTERNALSYM SCESVC_ANALYSIS_LINE}
TScesvcAnalysisLine = SCESVC_ANALYSIS_LINE;
PScesvcAnalysisLine = PSCESVC_ANALYSIS_LINE;
PSCESVC_ANALYSIS_INFO = ^SCESVC_ANALYSIS_INFO;
{$EXTERNALSYM PSCESVC_ANALYSIS_INFO}
_SCESVC_ANALYSIS_INFO_ = record
Count: DWORD;
Lines: PSCESVC_ANALYSIS_LINE;
end;
{$EXTERNALSYM _SCESVC_ANALYSIS_INFO_}
SCESVC_ANALYSIS_INFO = _SCESVC_ANALYSIS_INFO_;
{$EXTERNALSYM SCESVC_ANALYSIS_INFO}
TScesvcAnalysisInfo = SCESVC_ANALYSIS_INFO;
PScesvcAnalysisInfo = PSCESVC_ANALYSIS_INFO;
const
SCESVC_ENUMERATION_MAX = 100;
{$EXTERNALSYM SCESVC_ENUMERATION_MAX}
type
PFSCE_QUERY_INFO = function(sceHandle: SCE_HANDLE; sceType: SCESVC_INFO_TYPE;
lpPrefix: LPTSTR; bExact: BOOL; ppvInfo: PPVOID;
var psceEnumHandle: SCE_ENUMERATION_CONTEXT): SCESTATUS; stdcall;
{$EXTERNALSYM PFSCE_QUERY_INFO}
PFSCE_SET_INFO = function(sceHandle: SCE_HANDLE; sceType: SCESVC_INFO_TYPE;
lpPrefix: LPTSTR; bExact: BOOL; pvInfo: PVOID): SCESTATUS; stdcall;
{$EXTERNALSYM PFSCE_SET_INFO}
PFSCE_FREE_INFO = function(pvServiceInfo: PVOID): SCESTATUS; stdcall;
{$EXTERNALSYM PFSCE_FREE_INFO}
const
SCE_LOG_LEVEL_ALWAYS = 0;
{$EXTERNALSYM SCE_LOG_LEVEL_ALWAYS}
SCE_LOG_LEVEL_ERROR = 1;
{$EXTERNALSYM SCE_LOG_LEVEL_ERROR}
SCE_LOG_LEVEL_DETAIL = 2;
{$EXTERNALSYM SCE_LOG_LEVEL_DETAIL}
SCE_LOG_LEVEL_DEBUG = 3;
{$EXTERNALSYM SCE_LOG_LEVEL_DEBUG}
type
PFSCE_LOG_INFO = function(ErrLevel: Integer; Win32rc: DWORD; pErrFmt: LPTSTR {...}): SCESTATUS; stdcall;
{$EXTERNALSYM PFSCE_LOG_INFO}
PSCESVC_CALLBACK_INFO = ^SCESVC_CALLBACK_INFO;
{$EXTERNALSYM PSCESVC_CALLBACK_INFO}
_SCESVC_CALLBACK_INFO_ = record
sceHandle: SCE_HANDLE;
pfQueryInfo: PFSCE_QUERY_INFO;
pfSetInfo: PFSCE_SET_INFO;
pfFreeInfo: PFSCE_FREE_INFO;
pfLogInfo: PFSCE_LOG_INFO;
end;
{$EXTERNALSYM _SCESVC_CALLBACK_INFO_}
SCESVC_CALLBACK_INFO = _SCESVC_CALLBACK_INFO_;
{$EXTERNALSYM SCESVC_CALLBACK_INFO}
TScesvcCallbackInfo = SCESVC_CALLBACK_INFO;
PScesvcCallbackInfo = PSCESVC_CALLBACK_INFO;
PF_ConfigAnalyzeService = function(pSceCbInfo: PSCESVC_CALLBACK_INFO): SCESTATUS; stdcall;
{$EXTERNALSYM PF_ConfigAnalyzeService}
PF_UpdateService = function(pSceCbInfo: PSCESVC_CALLBACK_INFO;
ServiceInfo: PSCESVC_CONFIGURATION_INFO): SCESTATUS; stdcall;
{$EXTERNALSYM PF_UpdateService}
//
// headers for extension snap-ins
// only define this for NT5
//
const
struuidNodetypeSceTemplateServices = '{24a7f717-1f0c-11d1-affb-00c04fb984f9}';
{$EXTERNALSYM struuidNodetypeSceTemplateServices}
lstruuidNodetypeSceTemplateServices = '{24a7f717-1f0c-11d1-affb-00c04fb984f9}';
{$EXTERNALSYM lstruuidNodetypeSceTemplateServices}
cNodetypeSceTemplateServices: GUID = (
D1:$24a7f717; D2:$1f0c; D3:$11d1; D4:($af, $fb, $0, $c0, $4f, $b9, $84, $f9));
{$EXTERNALSYM cNodetypeSceTemplateServices}
struuidNodetypeSceAnalysisServices = '{678050c7-1ff8-11d1-affb-00c04fb984f9}';
{$EXTERNALSYM struuidNodetypeSceAnalysisServices}
lstruuidNodetypeSceAnalysisServices = '{678050c7-1ff8-11d1-affb-00c04fb984f9}';
{$EXTERNALSYM lstruuidNodetypeSceAnalysisServices}
cNodetypeSceAnalysisServices: GUID = (
D1:$678050c7; D2:$1ff8; D3:$11d1; D4:($af, $fb, $0, $c0, $4f, $b9, $84, $f9));
{$EXTERNALSYM cNodetypeSceAnalysisServices}
struuidNodetypeSceEventLog = '{2ce06698-4bf3-11d1-8c30-00c04fb984f9}';
{$EXTERNALSYM struuidNodetypeSceEventLog}
lstruuidNodetypeSceEventLog = '{2ce06698-4bf3-11d1-8c30-00c04fb984f9}';
{$EXTERNALSYM lstruuidNodetypeSceEventLog}
cNodetypeSceEventLog: GUID = (
D1:$2ce06698; D2:$4bf3; D3:$11d1; D4:($8c, $30, $0, $c0, $4f, $b9, $84, $f9));
{$EXTERNALSYM cNodetypeSceEventLog}
type
LPSCESVC_CONFIGURATION_INFO = ^PSCESVC_CONFIGURATION_INFO;
{$EXTERNALSYM LPSCESVC_CONFIGURATION_INFO}
LPSCESVC_ANALYSIS_INFO = ^PSCESVC_ANALYSIS_INFO;
{$EXTERNALSYM LPSCESVC_ANALYSIS_INFO}
const
CCF_SCESVC_ATTACHMENT = 'CCF_SCESVC_ATTACHMENT';
{$EXTERNALSYM CCF_SCESVC_ATTACHMENT}
CCF_SCESVC_ATTACHMENT_DATA = 'CCF_SCESVC_ATTACHMENT_DATA';
{$EXTERNALSYM CCF_SCESVC_ATTACHMENT_DATA}
//
// implemented by service attachment
//
const
IID_ISceSvcAttachmentPersistInfo: GUID = (
D1:$6d90e0d0; D2:$200d; D3:$11d1; D4:($af, $fb, $0, $c0, $4f, $b9, $84, $f9));
{$EXTERNALSYM IID_ISceSvcAttachmentPersistInfo}
SID_ISceSvcAttachmentPersistInfo = '{6d90e0d0-200d-11d1-affb-00c04fb984f9}';
type
ISceSvcAttachmentPersistInfo = interface (IUnknown)
[SID_ISceSvcAttachmentPersistInfo]
function Save(lpTemplateName: LPTSTR; scesvcHandle: PSCESVC_HANDLE;
ppvData: PPVOID; pbOverwriteAll: PBOOL): HRESULT; stdcall;
function IsDirty(lpTemplateName: LPTSTR): HRESULT; stdcall;
function FreeBuffer(pvData: PVOID): HRESULT; stdcall;
end;
{$EXTERNALSYM ISceSvcAttachmentPersistInfo}
LPSCESVCATTACHMENTPERSISTINFO = ISceSvcAttachmentPersistInfo;
{$EXTERNALSYM LPSCESVCATTACHMENTPERSISTINFO}
//
// implemented by SecEdit
//
const
IID_ISceSvcAttachmentData: GUID = (
D1:$17c35fde; D2:$200d; D3:$11d1; D4:($af, $fb, $0, $c0, $4f, $b9, $84, $f9));
{$EXTERNALSYM IID_ISceSvcAttachmentData}
SID_ISceSvcAttachmentData = '{17c35fde-200d-11d1-affb-00c04fb984f9}';
type
ISceSvcAttachmentData = interface (IUnknown)
[SID_ISceSvcAttachmentData]
function GetData(scesvcHandle: SCESVC_HANDLE; sceType: SCESVC_INFO_TYPE;
ppvData: PPVOID; psceEnumHandle: PSCE_ENUMERATION_CONTEXT): HRESULT; stdcall;
function Initialize(lpServiceName, lpTemplateName: LPCTSTR;
lpSceSvcPersistInfo: LPSCESVCATTACHMENTPERSISTINFO;
pscesvcHandle: PSCESVC_HANDLE): HRESULT; stdcall;
function FreeBuffer(pvData: PVOID): HRESULT; stdcall;
function CloseHandle(scesvcHandle: SCESVC_HANDLE): HRESULT; stdcall;
end;
{$EXTERNALSYM ISceSvcAttachmentData}
LPSCESVCATTACHMENTDATA = ISceSvcAttachmentData;
{$EXTERNALSYM LPSCESVCATTACHMENTDATA}
{$ENDIF JWA_IMPLEMENTATIONSECTION}
{$IFNDEF JWA_OMIT_SECTIONS}
implementation
//uses ...
{$ENDIF JWA_OMIT_SECTIONS}
{$IFNDEF JWA_INTERFACESECTION}
{$ENDIF JWA_INTERFACESECTION}
{$IFNDEF JWA_OMIT_SECTIONS}
end.
{$ENDIF JWA_OMIT_SECTIONS}