Пример #1
0
 private static IEnumerable <string> EnumerateObjects(AmClusterGroupHandle handle, AmClusterGroupEnum objectType)
 {
     new List <string>(16);
     using (AmClusGroupEnumHandle enumHandle = ClusapiMethods.ClusterGroupOpenEnum(handle, objectType))
     {
         if (enumHandle.IsInvalid)
         {
             int lastWin32Error = Marshal.GetLastWin32Error();
             throw AmExceptionHelper.ConstructClusterApiException(lastWin32Error, "ClusterOpenGroupEnum(objecttype={0})", new object[]
             {
                 objectType
             });
         }
         int           entryIndex       = 0;
         int           objectNameLen    = 256;
         StringBuilder objectNameBuffer = new StringBuilder(objectNameLen);
         int           errorCode;
         for (;;)
         {
             objectNameLen = objectNameBuffer.Capacity;
             AmClusterGroupEnum objectTypeRetrived;
             errorCode = ClusapiMethods.ClusterGroupEnum(enumHandle, entryIndex, out objectTypeRetrived, objectNameBuffer, ref objectNameLen);
             if (errorCode == 259)
             {
                 goto IL_171;
             }
             if (errorCode == 234)
             {
                 objectNameBuffer.EnsureCapacity(objectNameLen);
             }
             else
             {
                 if (errorCode != 0)
                 {
                     break;
                 }
                 if (objectTypeRetrived == objectType)
                 {
                     yield return(objectNameBuffer.ToString());
                 }
                 entryIndex++;
             }
         }
         throw AmExceptionHelper.ConstructClusterApiException(errorCode, "ClusterGroupEnum()", new object[0]);
         IL_171 :;
     }
     yield break;
 }
Пример #2
0
 internal static extern int ClusterGroupEnum([In] AmClusGroupEnumHandle hEnum, [In] int dwIndex, out AmClusterGroupEnum lpdwType, [Out] StringBuilder pName, [In][Out] ref int count);