SceSvcAttachmentConfig 구현
SceSvcAttachmentConfig 함수는 보안 데이터베이스에서 정보를 검색한 다음 해당 정보를 사용하여 서비스를 구성해야 합니다.
SceSvcAttachmentConfig를 구현할 때 모든 정보를 검색한 다음 서비스를 구성하거나 단계별 서비스를 검색하고 구성할 수 있습니다. 다음 알고리즘은 모든 정보를 검색한 다음 서비스를 구성합니다.
SceSvcAttachmentConfig를 구현하려면
- 정보를 검색하고 코드를 반환하는 데 필요한 변수를 정의합니다.
- 콜백 구조에서 pfQueryInfo 콜백 함수를 호출하여 보안 데이터베이스에서 구성 정보를 검색합니다.
- 반환된 정보를 사용하여 시스템을 구성합니다.
- 콜백 구조에서 pfFreeInfo 콜백 함수를 호출하여 반환된 정보에 사용되는 메모리를 해제합니다.
- 확장이 분석 로그 파일에 추가하려는 메시지가 있는 경우 콜백 구조에서 pfLogInfo 콜백 함수를 호출합니다.
- 적절한 SCESTATUS 코드를 반환합니다.
다음 예제에서는 SceSvcAttachmentConfig의 가능한 구현 중 하나를 보여 줍니다. 이 예제에서는 ProcessConfigurationLine 함수가 서비스 구성을 설정합니다. 이 함수의 구현은 표시되지 않습니다.
SCESTATUS WINAPI SceSvcAttachmentConfig (
IN PSCESVC_CALLBACK_INFO pSceCbInfo
)
{
////////////////////////////////////////////////////
// Define variables.
////////////////////////////////////////////////////
PSCESVC_CONFIGURATION_INFO pConfigInfo = NULL;
SCESTATUS retCode;
SCE_ENUMERATION_CONTEXT EnumContext = 0;
if ( pSceCbInfo == NULL ||
pSceCbInfo->sceHandle == NULL ||
pSceCbInfo->pfQueryInfo == NULL ||
pSceCbInfo->pfSetInfo == NULL ||
pSceCbInfo->pfFreeInfo == NULL )
{
return(SCESTATUS_INVALID_PARAMETER);
}
////////////////////////////////////////////////////
// Retrieve configuration information and configure
// system.
////////////////////////////////////////////////////
do
{
retCode = (*(pSceCbInfo->pfQueryInfo))( pSceCbInfo->sceHandle,
SceSvcConfigurationInfo,
NULL,
FALSE,
(PVOID *)&pConfigInfo,
&EnumContext
);
if (retCode == SCESTATUS_SUCCESS && pConfigInfo != NULL)
{
ULONG i:
//////////////////////////////////////////////////
// Configure system.
/////////////////////////////////////////////////
for(i = 0; < pConfigInfo->Count; i++)
{
if(pConfigInfo->Line[i].Key == NULL)
continue;
ProcessConfigurationLine(pConfigInfo->Line[i]);
}
//////////////////////////////////////////////////
// Free data returned.
/////////////////////////////////////////////////
(*(pSceCbInfo->pfFreeInfo)) ((PVOPID)pConfigInfo);
pConfigInfo = NULL;
}
} while (retCode == SCESTATUS_SUCCESS && CountReturned > 0);
////////////////////////////////////////////////////
// Add code for other return codes if retCode is
// not SCESTATUS_SUCCESS.
///////////////////////////////////////////////////
return retCode;
}