您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CancelIo函数代码示例

51自学网 2021-06-01 20:09:22
  C++
这篇教程C++ CancelIo函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CancelIo函数的典型用法代码示例。如果您正苦于以下问题:C++ CancelIo函数的具体用法?C++ CancelIo怎么用?C++ CancelIo使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CancelIo函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: native_dirmonitor_remove

void native_dirmonitor_remove(Ref *r){    FileMonitor *fm = Value_ptr(r->v[INDEX_FILEMONITOR_STRUCT]);    if (fm != NULL) {        fm->valid = FALSE;        CancelIo(fm->hDir);        refresh_dirmonitor(fm, TRUE);        if (!HasOverlappedIoCompleted(&fm->overlapped)) {            SleepEx(5, TRUE);        }        CloseHandle(fm->hDir);        CloseHandle(fm->overlapped.hEvent);        FileMonitor_del(fm);        r->v[INDEX_FILEMONITOR_STRUCT] = VALUE_NULL;    }}
开发者ID:x768,项目名称:fox-lang,代码行数:19,


示例2: ser_read_internal

static u32 ser_read_internal( ser_handler id, u32 timeout ){    HANDLE hComm = id->hnd;    DWORD readbytes = 0;    DWORD dwRes = WaitForSingleObject( id->o.hEvent, timeout == SER_INF_TIMEOUT ? INFINITE : timeout );    if( dwRes == WAIT_OBJECT_0 )    {        if( !GetOverlappedResult( hComm, &id->o, &readbytes, TRUE ) )            readbytes = 0;    }    else if( dwRes == WAIT_TIMEOUT )    {        CancelIo( hComm );        GetOverlappedResult( hComm, &id->o, &readbytes, TRUE );        readbytes = 0;    }    ResetEvent( id->o.hEvent );    return readbytes;}
开发者ID:Theemuts,项目名称:eLuaBrain,代码行数:19,


示例3: cancel_io

static __inline BOOL cancel_io(int _index){	if ((_index < 0) || (_index >= MAX_FDS)) {		return FALSE;	}	if ( (poll_fd[_index].fd < 0) || (poll_fd[_index].handle == INVALID_HANDLE_VALUE)	  || (poll_fd[_index].handle == 0) || (poll_fd[_index].overlapped == NULL) ) {		return TRUE;	}	if (CancelIoEx_Available) {		return (*pCancelIoEx)(poll_fd[_index].handle, poll_fd[_index].overlapped);	}	if (_poll_fd[_index].thread_id == GetCurrentThreadId()) {		return CancelIo(poll_fd[_index].handle);	}	usbi_warn(NULL, "Unable to cancel I/O that was started from another thread");	return FALSE;}
开发者ID:qtekfun,项目名称:htcDesire820Kernel,代码行数:19,


示例4: ser_windows_close

static voidser_windows_close (struct serial *scb){  struct ser_windows_state *state;  /* Stop any pending selects.  */  CancelIo ((HANDLE) _get_osfhandle (scb->fd));  state = scb->state;  CloseHandle (state->ov.hEvent);  CloseHandle (state->except_event);  if (scb->fd < 0)    return;  close (scb->fd);  scb->fd = -1;  xfree (scb->state);}
开发者ID:3125788,项目名称:android_toolchain_gdb,代码行数:19,


示例5: CancelIo

VOID CFileMonitorRequest::StopCheck( ULONG_PTR aRequest ){    CFileMonitorRequest * req = (CFileMonitorRequest *)aRequest;    if ( INVALID_HANDLE_VALUE != req->m_hMonitorPath )    {        CancelIo( req->m_hMonitorPath );        for ( int i = 0 ; i < MONITOR_THREAD_STOP_MAX_RETRY_COUNT ; i++ )        {            if ( TRUE == HasOverlappedIoCompleted(&req->m_overlapped) )                break;            else                SleepEx( 100 , TRUE );        }                CloseHandle( req->m_hMonitorPath );        req->m_hMonitorPath = INVALID_HANDLE_VALUE;        req->DecrementWorkCount( req->m_parent );    }}
开发者ID:winest,项目名称:CWUtils,代码行数:19,


示例6: switch

bool SerialPort::event(QEvent *e){    if (e->type() != QEvent::User)        return QObject::event(e);    switch (static_cast<SerialEvent*>(e)->reason()){    case EventComplete:{            DWORD bytes;            if (GetOverlappedResult(d->hPort, &d->over, &bytes, true)){                if (d->m_state == Read){                    d->m_buff.pack(&d->m_char, 1);                    if (d->m_char == '/n')                        emit read_ready();                }                if (d->m_state == Write){                    emit write_ready();                    d->m_state = Read;                }                if (d->m_state == Read){                    d->m_state = StartRead;                    SetEvent(d->hEvent);                }                break;            }            close();            emit error();            break;        }    case EventTimeout:{            log(L_WARN, "IO timeout");            CancelIo(d->hPort);            close();            emit error();            break;        }    case EventError:{            log(L_WARN, "IO error");            close();            emit error();        }    }    return true;}
开发者ID:BackupTheBerlios,项目名称:sim-im-svn,代码行数:42,


示例7: open_device

static HANDLE open_device(const char *path, BOOL enumerate){	HANDLE handle;	DWORD desired_access = (enumerate)? 0: (GENERIC_WRITE | GENERIC_READ);	DWORD share_mode = (enumerate)?	                      FILE_SHARE_READ|FILE_SHARE_WRITE:	                      FILE_SHARE_READ;	handle = CreateFileA(path,		desired_access,		share_mode,		NULL,		OPEN_EXISTING,		FILE_FLAG_OVERLAPPED,/*FILE_ATTRIBUTE_NORMAL,*/		0);  CancelIo(handle);	return handle;}
开发者ID:ByteArts,项目名称:picflash,代码行数:20,


示例8: error

void SerialPort::writeLine(const char *data, unsigned read_time){    if (d->hPort == INVALID_HANDLE_VALUE){        emit error();        return;    }    switch (d->m_state){    case Read:    case Write:        CancelIo(d->hPort);        break;    default:        break;    }    d->m_state		= StartWrite;    d->m_line		= data;    d->m_read_time	= read_time;    FlushFileBuffers(d->hPort);    SetEvent(d->hEvent);}
开发者ID:BackupTheBerlios,项目名称:sim-im-svn,代码行数:20,


示例9: win32iocp_cancel

static voidwin32iocp_cancel (struct event *ev, unsigned int rw_flags){    if (!pCancelIoEx) {	CancelIo(ev->fd);	rw_flags = (EVENT_READ | EVENT_WRITE);    }    if ((rw_flags & EVENT_READ) && ev->w.iocp.rov) {	if (pCancelIoEx) pCancelIoEx(ev->fd, (OVERLAPPED *) ev->w.iocp.rov);	ev->w.iocp.rov->ev = NULL;	ev->w.iocp.rov = NULL;	ev->flags &= ~EVENT_RPENDING;    }    if ((rw_flags & EVENT_WRITE) && ev->w.iocp.wov) {	if (pCancelIoEx) pCancelIoEx(ev->fd, (OVERLAPPED *) ev->w.iocp.wov);	ev->w.iocp.wov->ev = NULL;	ev->w.iocp.wov = NULL;	ev->flags &= ~EVENT_WPENDING;    }}
开发者ID:dilshod,项目名称:luasys,代码行数:20,


示例10: lock

/*!Closes a serial port.  This function has no effect if the serial port associated with the classis not currently open.*/void QextSerialPort::close(){    QMutexLocker lock(mutex);    if (isOpen()) {        flush();        QIODevice::close(); // mark ourselves as closed        CancelIo(Win_Handle);        if (CloseHandle(Win_Handle))            Win_Handle = INVALID_HANDLE_VALUE;        if (winEventNotifier)            winEventNotifier->deleteLater();        _bytesToWrite = 0;        foreach(OVERLAPPED* o, pendingWrites) {            CloseHandle(o->hEvent);            delete o;        }        pendingWrites.clear();    }
开发者ID:M-Elfeki,项目名称:Auto_Pilot,代码行数:24,


示例11: FinishCommand

// Returns errcode (or 0 if successful)DWORD FinishCommand(BOOL boolresult){	DWORD errcode;	DWORD waitcode;#ifdef VERBOSE_FUNCTION_DEVICE	PrintLog("CDVDiso device: FinishCommand()");#endif /* VERBOSE_FUNCTION_DEVICE */	if (boolresult == TRUE)	{		ResetEvent(waitevent.hEvent);		return(0);	} // ENDIF- Device is ready? Say so.	errcode = GetLastError();	if (errcode == ERROR_IO_PENDING)	{#ifdef VERBOSE_FUNCTION_DEVICE		PrintLog("CDVDiso device:   Waiting for completion.");#endif /* VERBOSE_FUNCTION_DEVICE */		waitcode = WaitForSingleObject(waitevent.hEvent, 10 * 1000); // 10 sec wait		if ((waitcode == WAIT_FAILED) || (waitcode == WAIT_ABANDONED))		{			errcode = GetLastError();		}		else if (waitcode == WAIT_TIMEOUT)		{			errcode = 21;			CancelIo(devicehandle); // Speculative Line		}		else		{			ResetEvent(waitevent.hEvent);			return(0); // Success!		} // ENDIF- Trouble waiting? (Or doesn't finish in 5 seconds?)	} // ENDIF- Should we wait for the call to finish?	ResetEvent(waitevent.hEvent);	return(errcode);} // END DeviceCommand()
开发者ID:ACanadianKernel,项目名称:pcsx2,代码行数:42,


示例12: pipe_disconnect

/* * Disconnect, but do not close, a pipe handle; and deregister * any pending waiter threads from its event handles. * * XXX: This must be called from primary thread, or lock held if not! */voidpipe_disconnect(pipe_instance_t *pp){    TRACE0(ENTER, "Entering pipe_disconnect");    if (pp == NULL)	return;    /*     * Cancel pending I/O before deregistering the callback,     * and disconnect the pipe, to avoid race conditions.     * We also reset the event(s) to avoid being signalled for     * things which haven't actually happened yet.     *     * XXX: To avoid races during shutdown, we may have to     * NULL out the second argument to UnregisterWaitEx().     * We can't, however, do that from a service thread.     */    if (pp->cwait != NULL) {        UnregisterWaitEx(pp->cwait, pp->cevent);	ResetEvent(pp->cevent);	pp->cwait = NULL;    }    if (pp->rwait != NULL) {        UnregisterWaitEx(pp->rwait, pp->revent);	ResetEvent(pp->revent);	pp->rwait = NULL;    }    if (pp->pipe != NULL) {        CancelIo(pp->pipe);	if (pp->state == PIPE_STATE_CONNECTED ||	    pp->state == PIPE_STATE_LISTEN) {	    DisconnectNamedPipe(pp->pipe);	}    }    pp->state = PIPE_STATE_INIT;    TRACE0(ENTER, "Leaving pipe_disconnect");}
开发者ID:BillTheBest,项目名称:xorp.ct,代码行数:47,


示例13: IOProcessorUnregisterSocket

// put back the IODesc to the free list and cancel all IO and put back FDbool IOProcessorUnregisterSocket(FD& fd){	IODesc*		iod;	BOOL		ret;	Log_Trace("fd = %d", fd.index);	iod = &iods[fd.index];	iod->next = freeIods;	freeIods = iod;	ret = CancelIo((HANDLE)fd.sock);	if (ret == 0)	{		ret = WSAGetLastError();		Log_Trace("CancelIo error %d", ret);		return false;	}	return true;}
开发者ID:agazso,项目名称:keyspace,代码行数:22,


示例14: defined

void Socket::CloseSocket(){	if (m_s != INVALID_SOCKET)	{#ifdef USE_WINDOWS_STYLE_SOCKETS# if defined(USE_WINDOWS8_API)		BOOL result = CancelIoEx((HANDLE) m_s, NULL);		assert(result || (!result && GetLastError() == ERROR_NOT_FOUND));		CheckAndHandleError_int("closesocket", closesocket(m_s));# else		BOOL result = CancelIo((HANDLE) m_s);		assert(result || (!result && GetLastError() == ERROR_NOT_FOUND));		CheckAndHandleError_int("closesocket", closesocket(m_s));# endif#else		CheckAndHandleError_int("close", close(m_s));#endif		m_s = INVALID_SOCKET;		SocketChanged();	}}
开发者ID:Tad-Done,项目名称:cryptopp,代码行数:21,


示例15: DestroyWatch

    /// Stops monitoring a directory.    void DestroyWatch(WatchStruct* pWatch)    {        if (pWatch)        {            pWatch->mStopNow = TRUE;            CancelIo(pWatch->mDirHandle);            RefreshWatch(pWatch, true);            if (!HasOverlappedIoCompleted(&pWatch->mOverlapped))            {                SleepEx(5, TRUE);            }            CloseHandle(pWatch->mOverlapped.hEvent);            CloseHandle(pWatch->mDirHandle);            delete pWatch->mDirName;            HeapFree(GetProcessHeap(), 0, pWatch);        }    }
开发者ID:Nelarius,项目名称:filesentry,代码行数:22,


示例16: uv_tcp_close

void uv_tcp_close(uv_tcp_t* tcp) {  int non_ifs_lsp;  int close_socket = 1;  /*   * In order for winsock to do a graceful close there must not be   * any pending reads.   */  if (tcp->flags & UV_HANDLE_READ_PENDING) {    /* Just do shutdown on non-shared sockets, which ensures graceful close. */    if (!(tcp->flags & UV_HANDLE_SHARED_TCP_SOCKET)) {      shutdown(tcp->socket, SD_SEND);      tcp->flags |= UV_HANDLE_SHUT;    } else {      /* Check if we have any non-IFS LSPs stacked on top of TCP */      non_ifs_lsp = (tcp->flags & UV_HANDLE_IPV6) ? uv_tcp_non_ifs_lsp_ipv6 :        uv_tcp_non_ifs_lsp_ipv4;      if (!non_ifs_lsp) {        /*          * Shared socket with no non-IFS LSPs, request to cancel pending I/O.         * The socket will be closed inside endgame.         */        CancelIo((HANDLE)tcp->socket);        close_socket = 0;      }    }  }  tcp->flags &= ~(UV_HANDLE_READING | UV_HANDLE_LISTENING);  if (close_socket) {    closesocket(tcp->socket);    tcp->flags |= UV_HANDLE_TCP_SOCKET_CLOSED;  }  if (tcp->reqs_pending == 0) {    uv_want_endgame(tcp->loop, (uv_handle_t*)tcp);  }}
开发者ID:InfamousNugz,项目名称:dnscrypt-proxy,代码行数:40,


示例17: async_pipe_close

int async_pipe_close(async_pipe_t pipe){	int err;	Win32Pipe* o = (Win32Pipe*)pipe;		// cancel ip	CancelIo(o->pipe);	// close pipe object	assert(0 == o->ref);	CloseHandle(o->pipe);	err = (int)GetLastError();	// close event object	if(o->overlap.hEvent)		CloseHandle(o->overlap.hEvent);	// free	GlobalFree(o);	return err;}
开发者ID:azalpy,项目名称:sdk,代码行数:22,


示例18: DESIGNER

/*-------------------------------------------------------------------------------	FUNCTION:		server_download----	DATE:			2009-03-29----	REVISIONS:		March 29 - Jerrod, Added a sleep after each packet send so --							   that the client can keep up with us.----	DESIGNER(S):	Jaymz Boilard--	PROGRAMMER(S):	Jaymz Boilard & Jerrod Hudson----	INTERFACE:		server_download(WPARAM wParam, PTSTR fileName)----	RETURNS:		void----	NOTES: The server's response when prompted by the client to service a--	download request.  It opens the file, reading & sending packets until--	we reach end of file.-----------------------------------------------------------------------------*/void server_download(WPARAM wParam, PTSTR fileName){	char outBuf[FILE_BUFF_SIZE];	DWORD bytesRead;	HANDLE hFile;	DWORD Flags = 0;	/* Open the file */	if((hFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL)) == INVALID_HANDLE_VALUE)	{		MessageBox(ghWndMain, (LPCSTR)"Error opening file!",			(LPCSTR)"Error!", MB_OK | MB_ICONSTOP);		return;	}	while(TRUE)	{		memset(outBuf,'/0',FILE_BUFF_SIZE);		ReadFile(hFile, outBuf, FILE_BUFF_SIZE, &bytesRead, NULL);		if(bytesRead == 0)		{			/* End of file, close & exit. */			send(wParam, "Last Pkt/0", 9, 0);			CancelIo(hFile);			break;		}		if(send(wParam, outBuf, bytesRead, 0) == -1)		{			if (WSAGetLastError() != WSAEWOULDBLOCK)			{				MessageBox(ghWndMain, (LPCSTR)"send() failed.",					(LPCSTR)"Error!", MB_OK | MB_ICONSTOP);				closesocket(wParam);			}		}		Sleep(1); /* Give the client some time to catch up with us */	}}
开发者ID:AshuDassanRepo,项目名称:bcit-courses,代码行数:58,


示例19: cs

////////////////////////////////////////////////////////////////////////////////// // FUNCTION:	CIOCPServer::RemoveStaleClient// // DESCRIPTION:	Client has died on us, close socket and remove context from our list// // INPUTS:		// // NOTES:	// // MODIFICATIONS:// // Name                  Date       Version    Comments// N T ALMOND            06042001	1.0        Origin// ////////////////////////////////////////////////////////////////////////////////void CIOCPServer::RemoveStaleClient(ClientContext* pContext, BOOL bGraceful){    CLock cs(m_cs, "RemoveStaleClient");	TRACE("CIOCPServer::RemoveStaleClient/n");    LINGER lingerStruct;    //    // If we're supposed to abort the connection, set the linger value    // on the socket to 0.    //    if (!bGraceful ) 	{        lingerStruct.l_onoff = 1;        lingerStruct.l_linger = 0;        setsockopt(pContext->m_Socket, SOL_SOCKET, SO_LINGER,                    (char *)&lingerStruct, sizeof(lingerStruct));    }    //    // Free context structures	if (m_listContexts.Find(pContext)) 	{		// Now close the socket handle.  This will do an abortive or  graceful close, as requested.  		CancelIo((HANDLE) pContext->m_Socket);		closesocket(pContext->m_Socket );		pContext->m_Socket = INVALID_SOCKET;        while (!HasOverlappedIoCompleted((LPOVERLAPPED)pContext))                Sleep(0);		m_pNotifyProc((LPVOID) m_pFrame, pContext, NC_CLIENT_DISCONNECT);		MoveToFreePool(pContext);	}}
开发者ID:chenboo,项目名称:Gh0stCB,代码行数:55,


示例20: wiiuse_io_read

int wiiuse_io_read(struct wiimote_t* wm) {	DWORD b, r;	if (!wm || !WIIMOTE_IS_CONNECTED(wm))		return 0;	if (!ReadFile(wm->dev_handle, wm->event_buf, sizeof(wm->event_buf), &b, &wm->hid_overlap)) {		/* partial read */		b = GetLastError();		if ((b == ERROR_HANDLE_EOF) || (b == ERROR_DEVICE_NOT_CONNECTED)) {			/* remote disconnect */			wiiuse_disconnected(wm);			return 0;		}		r = WaitForSingleObject(wm->hid_overlap.hEvent, wm->timeout);		if (r == WAIT_TIMEOUT) {			/* timeout - cancel and continue */			if (*wm->event_buf)				WIIUSE_WARNING("Packet ignored.  This may indicate a problem (timeout is %i ms).", wm->timeout);			CancelIo(wm->dev_handle);			ResetEvent(wm->hid_overlap.hEvent);			return 0;		} else if (r == WAIT_FAILED) {			WIIUSE_WARNING("A wait error occured on reading from wiimote %i.", wm->unid);			return 0;		}		if (!GetOverlappedResult(wm->dev_handle, &wm->hid_overlap, &b, 0))			return 0;	}	ResetEvent(wm->hid_overlap.hEvent);	return 1;}
开发者ID:kiennguyen1994,项目名称:game-programming-cse-hcmut-2012,代码行数:38,


示例21: while

void Filesystem::shutdownReadahead(){	if(readahead_thread.get()!=NULL)	{		readahead_thread->stop();		Server->getThreadPool()->waitFor(readahead_thread_ticket);		readahead_thread.reset();	}	size_t num = 0;	while (num_uncompleted_blocks > 0)	{		waitForCompletion(100);		++num;#ifdef _WIN32		if (num>10			&& num_uncompleted_blocks > 0)		{			CancelIo(hVol);		}#endif	}}
开发者ID:uroni,项目名称:urbackup_backend,代码行数:23,


示例22: USBHIDReadByte

// 读设备USBHIDDLL_API int __stdcall USBHIDReadByte(USBHANDLE handle, BYTE* byte, int len){    DWORD numberOfByteRead = 0;    if (handle != INVALID_HANDLE_VALUE)    {		CancelIo(handle);        int Result = ReadFile             (handle, 			byte,			len,            &numberOfByteRead,			&HIDOverlapped);		if (GetLastError() == ERROR_IO_PENDING)		{			WaitForSingleObject(handle, INFINITE);			GetOverlappedResult(handle, &HIDOverlapped, &numberOfByteRead, FALSE);		}    }    return numberOfByteRead;}
开发者ID:GACLove,项目名称:USB-HID-Demonstrator,代码行数:24,


示例23: CL_Exception

void CL_PipeListen_Impl::cancel_accept(){#ifdef WIN32	if (!async_io)		throw CL_Exception("CL_PipeConnection is not in an async I/O state");	BOOL result = CancelIo(handle);	if (result == FALSE)		throw CL_Exception("CancelIo failed");	DWORD bytes_transfered = 0;	result = GetOverlappedResult(handle, &accept_overlapped, &bytes_transfered, TRUE);	if (result == TRUE)	{		result = DisconnectNamedPipe(handle);	}	else if (GetLastError() != ERROR_OPERATION_ABORTED)	{		throw CL_Exception("GetOverlappedResult failed");	}	async_io = false;#endif}
开发者ID:PaulFSherwood,项目名称:cplusplus,代码行数:23,


示例24: ser_windows_close

static voidser_windows_close (struct serial *scb){    struct ser_windows_state *state;    /* Stop any pending selects.  On Windows 95 OS, CancelIo function does       not exist.  In that case, it can be replaced by a call to CloseHandle,       but this is not necessary here as we do close the Windows handle       by calling close (scb->fd) below.  */    if (CancelIo)        CancelIo ((HANDLE) _get_osfhandle (scb->fd));    state = scb->state;    CloseHandle (state->ov.hEvent);    CloseHandle (state->except_event);    if (scb->fd < 0)        return;    close (scb->fd);    scb->fd = -1;    xfree (scb->state);}
开发者ID:krichter722,项目名称:binutils-gdb,代码行数:23,


示例25: rtPipePollDone

/** * Called after a WaitForMultipleObjects returned in order to check for pending * events and stop whatever actions that rtPipePollStart() initiated. * * @returns Event mask or 0. * * @param   hPipe               The pipe handle. * @param   fEvents             The events we're polling for. * @param   fFinalEntry         Set if this is the final entry for this handle *                              in this poll set.  This can be used for dealing *                              with duplicate entries.  Only keep in mind that *                              this method is called in reverse order, so the *                              first call will have this set (when the entire *                              set was processed). * @param   fHarvestEvents      Set if we should check for pending events. */uint32_t rtPipePollDone(RTPIPE hPipe, uint32_t fEvents, bool fFinalEntry, bool fHarvestEvents){    RTPIPEINTERNAL *pThis = hPipe;    AssertPtrReturn(pThis, 0);    AssertReturn(pThis->u32Magic == RTPIPE_MAGIC, 0);    int rc = RTCritSectEnter(&pThis->CritSect);    AssertRCReturn(rc, 0);    Assert(pThis->cUsers > 0);    /* Cancel the zero byte read. */    uint32_t fRetEvents = 0;    if (pThis->fZeroByteRead)    {        CancelIo(pThis->hPipe);        DWORD cbRead = 0;        if (   !GetOverlappedResult(pThis->hPipe, &pThis->Overlapped, &cbRead, TRUE /*fWait*/)            && GetLastError() != ERROR_OPERATION_ABORTED)            fRetEvents = RTPOLL_EVT_ERROR;        pThis->fIOPending    = false;        pThis->fZeroByteRead = false;    }    /* harvest events. */    fRetEvents |= rtPipePollCheck(pThis, fEvents);    /* update counters. */    pThis->cUsers--;    if (!pThis->cUsers)        pThis->hPollSet = NIL_RTPOLLSET;    RTCritSectLeave(&pThis->CritSect);    return fRetEvents;}
开发者ID:greg100795,项目名称:virtualbox,代码行数:53,


示例26: serial_recv

/* * This function tries to read 'size' bytes of data. * It blocks until 'size' bytes of data have been read or after 1s has elapsed. * * It should only be used in the initialization stages, i.e. before the mainloop. */int serial_recv(int id, void* pdata, unsigned int size){  DWORD dwBytesRead = 0;  if(!ReadFile(serials[id].handle, (uint8_t*)pdata, size, NULL, &serials[id].rOverlapped))  {    if(GetLastError() != ERROR_IO_PENDING)    {      printf("ReadFile failed with error %lu/n", GetLastError());      return -1;    }    int ret = WaitForSingleObject(serials[id].rOverlapped.hEvent, 1000);    switch (ret)    {      case WAIT_OBJECT_0:        if (!GetOverlappedResult(serials[id].handle, &serials[id].rOverlapped, &dwBytesRead, FALSE))        {          printf("GetOverlappedResult failed with error %lu/n", GetLastError());          return -1;        }        break;      case WAIT_TIMEOUT:        CancelIo(serials[id].handle);        printf("WaitForSingleObject failed: timeout expired./n");        break;      default:        printf("WaitForSingleObject failed with error %lu/n", GetLastError());        return -1;    }  }  else  {    dwBytesRead = size;  }  return dwBytesRead;}
开发者ID:sdelgran,项目名称:GIMX,代码行数:43,


示例27: stop_monitoring

static voidstop_monitoring(LPVOID param){    BOOL already_stopped;    WDM_PMonitor monitor;    WDM_PEntry entry;    monitor = (WDM_PMonitor)param;    already_stopped = FALSE;    WDM_DEBUG("Stopping the monitor!");    EnterCriticalSection(&monitor->lock);        if ( ! monitor->running ) {            already_stopped = TRUE;        }        else {            monitor->running = FALSE;        }    LeaveCriticalSection(&monitor->lock);    if (already_stopped) {        WDM_DEBUG("Can't stop monitoring because it's already stopped (or it's never been started)!!");        return;    }    entry = monitor->head;    while(entry != NULL) {        CancelIo(entry->dir_handle); // Stop monitoring changes        entry = entry->next;    }    SetEvent(monitor->stop_event);    SetEvent(monitor->process_event); // The process code checks after the wait for an exit signal    WaitForSingleObject(monitor->monitoring_thread, 10000);}
开发者ID:caisong,项目名称:wdm,代码行数:37,


示例28: gst_ks_video_device_clear_buffers

static voidgst_ks_video_device_clear_buffers (GstKsVideoDevice * self){  GstKsVideoDevicePrivate *priv = GST_KS_VIDEO_DEVICE_GET_PRIVATE (self);  guint i;  if (priv->requests == NULL)    return;  /* Cancel pending requests */  CancelIo (priv->pin_handle);  for (i = 0; i < priv->num_requests; i++) {    ReadRequest *req = &g_array_index (priv->requests, ReadRequest, i);    DWORD bytes_returned;    GetOverlappedResult (priv->pin_handle, &req->overlapped, &bytes_returned,        TRUE);  }  /* Clean up */  for (i = 0; i < priv->requests->len; i++) {    ReadRequest *req = &g_array_index (priv->requests, ReadRequest, i);    HANDLE ev = g_array_index (priv->request_events, HANDLE, i);    g_free (req->buf_unaligned);    if (ev)      CloseHandle (ev);  }  g_array_free (priv->requests, TRUE);  priv->requests = NULL;  g_array_free (priv->request_events, TRUE);  priv->request_events = NULL;}
开发者ID:eta-im-dev,项目名称:media,代码行数:37,


示例29: VlcStreamDiscardThread

DWORD WINAPI VlcStreamDiscardThread(__in  LPVOID lpParameter){    HANDLE hPipe = (HANDLE)lpParameter;    char tmpBuffer[IPTV_BUFFER_SIZE];    OVERLAPPED o;    o.hEvent = CreateEvent( NULL, FALSE, FALSE, NULL);    LogDebug("StreamDiscardThread start");    DWORD startRecvTime = GetTickCount();    do    {        DWORD cbBytesRead;        ResetEvent(o.hEvent);        o.Internal = o.InternalHigh = o.Offset = o.OffsetHigh = 0;        BOOL fSuccess = ReadFile( hPipe, tmpBuffer, sizeof(tmpBuffer), &cbBytesRead, &o);        if (GetLastError() == ERROR_IO_PENDING)        {            WaitForSingleObject(o.hEvent, 5000);            fSuccess = GetOverlappedResult(hPipe, &o, &cbBytesRead, false);        }        LogDebug("StreamDiscardThread bytes read: %d", cbBytesRead);        if (!fSuccess || cbBytesRead == 0)        {            CancelIo(hPipe);            LogDebug("StreamDiscardThread eof");            break;        }    } while (abs((signed long)(GetTickCount() - startRecvTime)) < 10000);    CloseHandle(o.hEvent);    LogDebug("StreamDiscardThread end");    return 0;}
开发者ID:Yura80,项目名称:mpvlcsource,代码行数:37,


示例30: CancelIo

void XWinFileSystemNotification::PrepareDeleteChangeData(XWinChangeData *inData ){	// cancel pending io operation	inData->fIsCanceled = true;	if (inData->fTimer)	{		::CancelWaitableTimer( inData->fTimer );		// This ensures we don't fire an event if we no longer care about changes	}	// pas besoin de CancelIoEx car c'est appele depuis la thread qui fait les IO. Et tant mieux car CancelIoEx blocke dans certains cas.	BOOL ok = CancelIo( inData->fFolderHandle);#if WITH_ASSERT	DWORD err = GetLastError();	if (!ok && err != ERROR_NOT_FOUND)	{		char buff[1024];		sprintf(buff,"CancelIoEx err=%i/r/n", err);		OutputDebugString(buff);	}#endif		inData->fCallback = NULL;}
开发者ID:sanyaade-iot,项目名称:core-XToolbox,代码行数:24,



注:本文中的CancelIo函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ CanteraError函数代码示例
C++ CancelEvents函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。