Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
FungsiSceSvcAttachmentConfig harus mengambil informasi dari database keamanan lalu menggunakan informasi tersebut untuk mengonfigurasi layanan.
Saat menerapkan SceSvcAttachmentConfig, Anda dapat mengambil semua informasi lalu mengonfigurasi layanan, atau mengambil dan mengonfigurasi layanan dalam langkah-langkah. Algoritma berikut mengambil semua informasi lalu mengonfigurasi layanan.
Untuk mengimplementasikan SceSvcAttachmentConfig
- Tentukan variabel yang diperlukan untuk mengambil informasi dan mengembalikan kode.
- Panggil fungsi panggilan balik pfQueryInfo dalam struktur panggilan balik untuk mengambil informasi konfigurasi dari database keamanan.
- Konfigurasikan sistem dengan informasi yang dikembalikan.
- Panggil fungsi panggilan balik pfFreeInfo dalam struktur panggilan balik untuk mengosongkan memori yang digunakan untuk informasi yang dikembalikan.
- Jika ada pesan yang ingin ditambahkan ekstensi ke file log analisis, panggil fungsi panggilan balik pfLogInfo dalam struktur panggilan balik.
- Mengembalikan kode SCESTATUS yang sesuai.
Contoh berikut menunjukkan salah satu kemungkinan implementasi SceSvcAttachmentConfig. Perhatikan bahwa dalam contoh ini, fungsi ProcessConfigurationLine mengatur konfigurasi layanan. Implementasi fungsi ini tidak ditampilkan.
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;
}