title: System.DirectoryServices.DirectoryServicesCOMException (0x800700EA): More data is available
body: <p>For some reason, on monday, code that was working the previous week suddendly started giving me the following error.</p>
  
  <p>System.DirectoryServices.DirectoryServicesCOMException (0x800700EA): More data is available.  Which happens when I try to do a FindAll against an Ad query</p>
  
  <p>I made a small console application and was able to reproduce the error.  What would cause this error to occur?</p>
  
  <pre><code>   static void Main(string[] args)
      {
          var propToLoad = new StringCollection();
          propToLoad.Add(ADProperty.DistinguishedName);
  
           DirectoryEntry de = new DirectoryEntry();
          de.Path = "MySearchROOT";
  
          DirectorySearcher ser = new DirectorySearcher(de);
          ser.Filter = "(&amp;(&amp;(&amp;(dfaitUserType=PER)(objectCategory=person)(objectClass=user)(!dfaitObjectStatus=*)(!msExchHideFromAddressLists=TRUE))(&amp;(sAMAccountName=*)(dfaitOrgCode=*)(objectCategory=person)(objectClass=user)(!dfaitObjectStatus=*)(!msExchHideFromAddressLists=TRUE)))(|(employeeType=CBS)(employeeType=LES)(employeeType=CON)(employeeType=OGD)(employeeType=OTH)(employeeType=MIN)))";
  
  
  // We made constants to represent all the Ad properties
              ser.PropertiesToLoad.Add(ADProperty.Surname);
              ser.PropertiesToLoad.Add(ADProperty.GivenName);
              ser.PropertiesToLoad.Add(ADProperty.Mail);
              ser.PropertiesToLoad.Add(ADProperty.DisplayName);
              ser.PropertiesToLoad.Add(ADProperty.DfaitEdsId);
              ser.PropertiesToLoad.Add(ADProperty.DistinguishedName);
              ser.PropertiesToLoad.Add(ADProperty.MemberOf);
              ser.PropertiesToLoad.Add(ADProperty.EmployeeType);
              ser.PropertiesToLoad.Add(ADProperty.Department);
              ser.PropertiesToLoad.Add(ADProperty.Company);
              ser.PropertiesToLoad.Add(ADProperty.MSExchHideFromAddressLists);
              ser.PropertiesToLoad.Add(ADProperty.MailNickname);
              ser.PropertiesToLoad.Add(ADProperty.Initials);
              ser.PropertiesToLoad.Add(ADProperty.TelephoneNumber);
              ser.PropertiesToLoad.Add(ADProperty.FacsimileTelephoneNumber);
              ser.PropertiesToLoad.Add(ADProperty.Mobile);
              ser.PropertiesToLoad.Add(ADProperty.OtherTelephone);
              ser.PropertiesToLoad.Add(ADProperty.Name);
              ser.PropertiesToLoad.Add(ADProperty.Pager);
              ser.PropertiesToLoad.Add(ADProperty.OtherMobile);
              ser.PropertiesToLoad.Add(ADProperty.PhysicalDeliveryOfficeName);
              ser.PropertiesToLoad.Add(ADProperty.TitleEng);
              ser.PropertiesToLoad.Add(ADProperty.TitleFre);
              ser.PropertiesToLoad.Add(ADProperty.OtherHomePhone);
              ser.PropertiesToLoad.Add(ADProperty.TelephoneAssistant);
              ser.PropertiesToLoad.Add(ADProperty.Mail);
          ser.Sort.PropertyName = ADProperty.DfaitEdsId;
          ser.Sort.Direction = SortDirection.Ascending;
          ser.PageSize = 1000;
  
          var returnValue = ser.FindAll();
  
          Console.WriteLine("Total Records found = {0}", returnValue.Count);
          Console.WriteLine();
  
          foreach (SearchResult res in returnValue)
          {
              var found = GetMultiValue(res, ADProperty.DistinguishedName);
              if (found != null &amp; found.Length &gt; 0)
              {
                  Console.WriteLine(found[0]);
              }
          }
  
      }
  
              public static string[] GetMultiValue(SearchResult result, string fieldName)
      {
          string[] returnValue = null;
  
          if (result != null)
          {
              if (result.Properties.Contains(fieldName))
              {
                  ResultPropertyValueCollection propertyValue = result.Properties[fieldName];
                  if (propertyValue != null)
                  {
                      if (propertyValue.Count &gt; 1)
                      {
                          string[] valueArray = new string[propertyValue.Count];
                          for (int i = 0; i &lt; propertyValue.Count; i++)
                          {
                              string valStr = propertyValue[i].ToString();
                              valueArray[i] = valStr;
                          }
  
                          returnValue = valueArray;
                      }
                      else if (propertyValue.Count == 1)
                      {
                          string[] tempString = new string[] { propertyValue[0].ToString() };
                          returnValue = tempString;
                      }
                      else
                      {
                          string[] tempString = new string[] { };
                          returnValue = tempString;
                      }
                  }
              }
          }
  
          return returnValue;
      }
  </code></pre>