/// \return The address of an array of integers containing the
        /// file descriptors.
        virtual int
-               poll_fds(struct pollfd * array, int space);
+               poll_fds(PollType * array, int space);
 
        /// Return the number of audio samples the device can handle in
        /// a write without blocking. This version always returns SIZE_MAX.
   }
 
   int
-  AudioSink::poll_fds(struct pollfd *, int)
+  AudioSink::poll_fds(PollType *, int)
   {
     return 0;
   }
 
     /// with the number of file descriptors in the array.
     /// \return The address of an array of integers containing the
     /// file descriptors.
-    virtual int        poll_fds(struct pollfd * array, int space);
+    virtual int        poll_fds(PollType * array, int space);
 
     /// Return the amount of bytes ready for read. In this case, it always
     /// returns 0.
   }
 
   int
-  BlankPanel::poll_fds(struct pollfd *, int)
+  BlankPanel::poll_fds(PollType *, int)
   {
     return 0;
   }
 
     /// written.
     virtual std::size_t        ready() = 0;
 
-    ///
-    virtual int                poll_fds(struct pollfd * array, int space) = 0;
+    /// Type used by poll_fds(). For portability to Windows.
+    typedef struct pollfd      PollType;
+
+    /// Poll file descriptors for available I/O.
+    virtual int                poll_fds(PollType * array, int space) = 0;
 
     virtual            ~IODevice() = 0;
 };
 
         /// \return The address of an array of integers containing the
        /// file descriptors.
        virtual int
-               poll_fds(struct pollfd * array, int space);
+               poll_fds(PollType * array, int space);
 
        /// Return the number of audio samples the device can provide in
        /// a read without blocking.
   }
 
   int
-  AudioInALSA::poll_fds(struct pollfd * array, int space)
+  AudioInALSA::poll_fds(PollType * array, int space)
   {
     const int size = snd_pcm_poll_descriptors_count(handle);
     
 
         /// \return The address of an array of integers containing the
        /// file descriptors.
        virtual int
-               poll_fds(struct pollfd * array, int space);
+               poll_fds(PollType * array, int space);
 
        /// Return the number of audio samples the device can handle in
        /// a write without blocking.
   }
 
   int
-  AudioOutALSA::poll_fds(struct pollfd * array, int space)
+  AudioOutALSA::poll_fds(PollType * array, int space)
   {
     const int size = snd_pcm_poll_descriptors_count(handle);
     
 
     /// with the number of file descriptors in the array.
     /// \return The address of an array of integers containing the
     /// file descriptors.
-    virtual int        poll_fds(struct pollfd * array, int space);
+    virtual int        poll_fds(PollType * array, int space);
 
     /// Return the amount of bytes ready for read.
     std::size_t        ready();
   }
 
   int
-  PTTConstant::poll_fds(struct pollfd *, int)
+  PTTConstant::poll_fds(PollType *, int)
   {
     return 0;
   }
 
     /// with the number of file descriptors in the array.
     /// \return The address of an array of integers containing the
     /// file descriptors.
-    virtual int                poll_fds(struct pollfd * array, int space);
+    virtual int                poll_fds(PollType * array, int space);
 
     /// Read the text data.
     std::size_t                read(char * buffer, std::size_t size);
   }
 
   int
-  TextConstant::poll_fds(struct pollfd *, int)
+  TextConstant::poll_fds(PollType *, int)
   {
     return 0;
   }
 
     /// with the number of file descriptors in the array.
     /// \return The address of an array of integers containing the
     /// file descriptors.
-    virtual int        poll_fds(struct pollfd * array, int space);
+    virtual int        poll_fds(PollType * array, int space);
 
     /// Return the amount of audio samples for read. In this case, it always
     /// returns SIZE_MAX.
   }
 
   int
-  Tone::poll_fds(struct pollfd *, int)
+  Tone::poll_fds(PollType *, int)
   {
     return 0;
   }