ResUtilEnumResources-Funktion (resapi.h)
Listet alle Ressourcen im lokalen Cluster auf und initiiert einen benutzerdefinierten Vorgang für jede Ressource. Der PRESUTIL_ENUM_RESOURCES Typ definiert einen Zeiger auf diese Funktion.
Syntax
DWORD ResUtilEnumResources(
[in] HRESOURCE hSelf,
[in] LPCWSTR lpszResTypeName,
[in] LPRESOURCE_CALLBACK pResCallBack,
[in] PVOID pParameter
);
Parameter
[in] hSelf
Optionales Handle für eine Clusterressource. Die Rückruffunktion wird für eine von hSelf identifizierte Ressource nicht aufgerufen.
[in] lpszResTypeName
Optionaler Zeiger auf einen Namen eines Ressourcentyps , der den Bereich der aufzuzählenden Ressourcen einschränkt. Wenn lpszResTypeName angegeben ist, werden nur Ressourcen des angegebenen Typs aufgelistet.
[in] pResCallBack
Zeiger auf eine benutzerdefinierte Funktion, die für jede enumerierte Ressource aufgerufen wird. Diese Funktion muss der Definition der ResourceCallback-Rückruffunktion entsprechen (beachten Sie, dass Parameternamen nicht Teil der Definition sind; sie wurden hier aus Gründen der Übersichtlichkeit hinzugefügt):
DWORD (*LPRESOURCE_CALLBACK)(
HRESOURCE hSelf,
HRESOURCE hEnum,
PVOID pParameter
);
[in] pParameter
Ein generischer Puffer, mit dem Sie jede Art von Daten an die Rückruffunktion übergeben können. ResUtilEnumResources verwendet diesen Parameter überhaupt nicht, sondern übergibt lediglich den Zeiger auf die Rückruffunktion. Ob Sie NULL für den Parameter übergeben können, hängt davon ab, wie die Rückruffunktion implementiert ist.
Rückgabewert
Wenn der Vorgang erfolgreich ist oder pResCallBackERROR_NO_MORE_ITEMS zurückgibt, gibt die Funktion ERROR_SUCCESS zurück.
Wenn der Vorgang fehlschlägt, hält die Funktion die Enumeration sofort an und gibt den von der Rückruffunktion zurückgegebenen Wert zurück.
Hinweise
ResUtilEnumResources ist eine praktische und benutzerfreundliche Alternative zur ClusterResourceEnum-Funktion .
ResUtilEnumResources muss auf einem Clusterknoten ausgeführt werden, da nur eine Verbindung mit dem lokalen Cluster hergestellt wird. Mit der ResUtilEnumResourcesEx-Funktion können Sie einen Remotecluster angeben.
Im folgenden Beispiel wird ResUtilEnumResources verwendet, um die Namen und Zustände aller Ressourcen im Cluster aufzulisten.
//////////////////////////////////////////////////////////////////////
// ClusDocEx_EnumDemo.cpp
//
// Uses the ResUtilEnumResources function to list the names and
// states of all cluster resources.
//
// To compile and run this example you will need two other examples
// from the documentation: ClusDocEx.h (see "ClusDocEx.h") and
// ClusDocEx_GetControlCodeOutput.cpp (see "Getting Information with
// Control Codes").
//
//////////////////////////////////////////////////////////////////////
#include "ClusDocEx.h"
#include "ClusDocEx_GetControlCodeOutput.cpp"
DWORD
MyCallbackFunction(
HRESOURCE hSelf,
HRESOURCE hCurrentEnum,
PVOID pData );
LPRESOURCE_CALLBACK g_pMyCallbackFunction = &MyCallbackFunction;
int main( void )
{
wprintf( L"\n\nResource (State)\n----------------\n" );
DWORD dwResult = ResUtilEnumResources(
NULL,
NULL,
g_pMyCallbackFunction,
NULL );
if( dwResult != ERROR_SUCCESS )
{
ClusDocEx_DebugPrint( L"ResUtilEnumResources returned an error.", dwResult );
return 1;
}
else
return 0;
}
DWORD
MyCallbackFunction(
HRESOURCE hSelf,
HRESOURCE hCurrentEnum,
PVOID pData )
{
DWORD dwResult = ERROR_SUCCESS,
cbNameSize = 0,
dwState = 0;
WCHAR* pszState = NULL;
WCHAR* pszEnumName = ClusDocEx_ResGetControlCodeOutput(
hCurrentEnum,
NULL,
CLUSCTL_RESOURCE_GET_NAME,
&cbNameSize );
if( pszEnumName == NULL )
{
dwResult = GetLastError();
goto EndFunc;
}
dwState = GetClusterResourceState(
hCurrentEnum,
NULL,
NULL,
NULL,
NULL );
switch( dwState )
{
case ClusterResourceOnline:
pszState = L"Online";
break;
case ClusterResourceOffline:
pszState = L"Offline";
break;
case ClusterResourcePending:
pszState = L"Pending";
break;
case ClusterResourceOnlinePending:
pszState = L"OnlinePending";
break;
case ClusterResourceOfflinePending:
pszState = L"OfflinePending";
break;
case ClusterResourceFailed:
pszState = L"Failed";
break;
case ClusterResourceInitializing:
pszState = L"Initializing";
break;
default:
pszState = L"Unknown";
break;
}
wprintf( L"%ls (%ls)\n", pszEnumName, pszState );
EndFunc:
LocalFree( pszEnumName );
return dwResult;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Nicht unterstützt |
Unterstützte Mindestversion (Server) | Windows Server 2008 Enterprise, Windows Server 2008 Datacenter |
Zielplattform | Windows |
Kopfzeile | resapi.h |
Bibliothek | ResUtils.lib |
DLL | ResUtils.dll |