me->md.thr_bound_cpu = NULL;
PR_IMPLEMENT(PRStatus) PR_NT_CancelIo(PRFileDesc *fd){    PRThread *me = _PR_MD_CURRENT_THREAD();	PRBool fWait;	PRFileDesc *bottom;	bottom = PR_GetIdentitiesLayer(fd, PR_NSPR_IO_LAYER);    if (!me->io_suspended || (NULL == bottom) ||					(me->io_fd != bottom->secret->md.osfd)) {        PR_SetError(PR_INVALID_STATE_ERROR, 0);        return PR_FAILURE;    }	/*	 * The CancelIO operation has to be issued by the same NT thread that	 * issued the I/O operation	 */	PR_ASSERT(_PR_IS_NATIVE_THREAD(me) || (me->cpu == me->md.thr_bound_cpu));	if (me->io_pending) {		if (!CancelIo((HANDLE)bottom->secret->md.osfd)) {			PR_SetError(PR_INVALID_STATE_ERROR, GetLastError());			return PR_FAILURE;		}	}	_PR_THREAD_LOCK(me);	fWait = me->io_pending;	me->io_suspended = PR_FALSE;	me->state = _PR_IO_WAIT;	me->md.interrupt_disabled = PR_TRUE;	_PR_THREAD_UNLOCK(me);	if (fWait)		_NT_IO_WAIT(me, PR_INTERVAL_NO_TIMEOUT);	me->md.thr_bound_cpu = NULL;	PR_ASSERT(me->io_suspended ==  PR_FALSE);	PR_ASSERT(me->io_pending ==  PR_FALSE);	_PR_THREAD_LOCK(me);	me->md.interrupt_disabled = PR_FALSE;    me->io_suspended = PR_FALSE;    me->io_pending = PR_FALSE;	me->state = _PR_RUNNING;	_PR_THREAD_UNLOCK(me);	return PR_SUCCESS;}