Listing 2: Core of the Listen member function of CNamedPipeArray
// Wait for clients to connect or exit event being set. When a // client connects to a pipe, the corresponding overlapped event // is siganled. // dwRetVal = WaitForMultipleObjects( dwNumPipeInstances+1, // number of handles m_ahOlEventsAndExitEvent, // pointer to array FALSE, // wait flag dwMilliseconds // time-out interval in milliseconds ); // if ( WAIT_FAILED == dwRetVal ) THROW_WIN32_EXCEPTION ; // Timeout occurred if ( WAIT_TIMEOUT == dwRetVal ) return waitTimeout ; // Index of event that caused the multiple wait to return dwRetIndex = dwRetVal - WAIT_OBJECT_0 ; // Exit event was signaled if ( dwNumPipeInstances == dwRetIndex ) { return waitExitEvent ; } // Now we have successfully connected to a client. The // event that caused the WFMO to return must be reset // immediately. The index is placed into the dwIndex // argument. // ResetEvent(m_ahOlEventsAndExitEvent[dwRetIndex]) ; refdwIndex = dwRetIndex ; return waitSuccess ; //End of File