这篇教程C++ CancelIo函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中CancelIo函数的典型用法代码示例。如果您正苦于以下问题:C++ CancelIo函数的具体用法?C++ CancelIo怎么用?C++ CancelIo使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了CancelIo函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: native_dirmonitor_removevoid 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_internalstatic 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_iostatic __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_closestatic 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: CancelIoVOID 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: switchbool 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_devicestatic 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: errorvoid 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_cancelstatic 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: definedvoid 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_closevoid 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_closeint 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_readint 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: whilevoid 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_Exceptionvoid 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_closestatic 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_monitoringstatic 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_buffersstatic 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: VlcStreamDiscardThreadDWORD 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: CancelIovoid 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函数代码示例 |