public PeerNameResolver(string peerName, int numberOfResultsRequested,
     PnrpResolveCriteria resolveCriteria, uint scopeId, string cloudName, TimeSpan timeout, List<PnrpRegistration> results)
     : base(null, null)
 {
     // pnrp has a hard-coded limit on the timeout value that can be passed to it
     // maximum value is 10 minutes
     if (timeout > MaxTimeout)
     {
         timeout = MaxTimeout;
     }
     timeoutHelper = new TimeoutHelper(timeout);
     PnrpInfo resolveQueryInfo = new PnrpInfo();
     resolveQueryInfo.dwSize = Marshal.SizeOf(typeof(PnrpInfo));
     resolveQueryInfo.nMaxResolve = numberOfResultsRequested;
     resolveQueryInfo.dwTimeout = (int)timeout.TotalSeconds;
     resolveQueryInfo.dwLifetime = 0;
     resolveQueryInfo.enNameState = 0;
     resolveQueryInfo.lpwszIdentity = null;
     resolveQueryInfo.dwFlags = PNRPINFO_HINT;
     IPEndPoint hint = PnrpPeerResolver.GetHint();
     resolveQueryInfo.enResolveCriteria = resolveCriteria;
     resolveQueryInfo.saHint = SOCKET_ADDRESS_SAFE.SocketAddressFromIPEndPoint(hint);
     resolveQuery = new WsaQuerySet();
     resolveQuery.ServiceInstanceName = peerName;
     resolveQuery.ServiceClassId = SvcIdNameV1;
     resolveQuery.NameSpace = NspNamespaces.Name;
     resolveQuery.NSProviderId = NsProviderName;
     resolveQuery.Context = cloudName;
     resolveQuery.Blob = resolveQueryInfo;
     this.results = results;
     this.scopeId = scopeId;
     ActionItem.Schedule(new Action<object>(SyncEnumeration), null);
 }
 public PeerNameResolver(string peerName, int numberOfResultsRequested,
     PnrpResolveCriteria resolveCriteria, TimeSpan timeout, List<PnrpRegistration> results)
     : this(peerName, numberOfResultsRequested, resolveCriteria, 0, GlobalCloudName, timeout, results)
 {
 }