anchor.diff:       nil)
       (:wait-failed
        (error (error-message (%ff-get-last-error))))))
  +
  +;; Closing things
  +(defun close-handle (handle)
  +  (%ff-close-handle handle))
  +
  +(defun do-with-handle (handle function)
  +  (unwind-protect
  +       (funcall function handle)
  +    (close-handle handle)))
  +
  +(defmacro with-handle ((var handle) &body body)
  +  `(do-with-handle ,handle
  +     #'(lambda (,var)
  +	 ,@body)))
  +
  +;; Cancelling IO
  +(defun cancel-all-io (handle)
  +  (%ff-cancel-io handle))
   
   ;;;; Named Pipes
   (defun valid-pipe-name-p (name)
  
positive.code: 
  (defun connect-named-pipe (server-handle &optional (request (make-instance 'connect-named-pipe-request)))
    (check-type server-handle named-pipe-handle)
    (assert (null (wait-for-single-object request 0)))
    (%ff-connect-named-pipe server-handle (overlapped-structure request))
    (setf (descriptor request) server-handle)
    request)
  
  
negative.code:     ;; Do not close the descriptor.
      (setf descriptor nil)))
  
  (defun do-with-request (request function)
    (unwind-protect
         (funcall function request)
      (free-request request)))
  
  (defmacro with-request ((var request) &body body)
    `(do-with-request ,request
       #'(lambda (,var)
  	 ,@body)))
  
  (defun invalidp (request)
    (check-type request request)
    (null (descriptor request)))
  