DirectPlay DirectPlay C/C++ 레퍼런스 인터페이스 IDirectPlay8Peer CancelAsyncOperation [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
비동기의 요구를 취소한다. 예를 들어,IDirectPlay8Peer 인터페이스의 몇개의 메서드는 디폴트에서는 비동기에게 실행된다. 상황에 따라, 요구가 처리되기 전에 그 요구를 취소하고 싶은 경우도 있다. 이 인터페이스로 비동기에게 실행할 수 있는 모든 메서드는,hAsyncHandle 파라미터를 돌려준다.
요구의 hAsyncHandle 를 이 메서드의 hAsyncHandle 파라미터에 건네주는 것에 의해, 특정의 요구가 삭제된다. 이 메서드를 호출해,hAsyncHandle 파라미터에 NULL 를,dwFlags 파라미터에 DPNCANCEL_ALL_OPERATIONS 를 지정하는 것에 의해, 대기중의 모든 비동기 처리를 취소할 수가 있다. 특정의 핸들이 이 메서드로 지정되었을 경우는, 어느 플래그도 설정해서는 안 된다.
구문
HRESULT CancelAsyncOperation(
const DPNHANDLE hAsyncHandle, const DWORD dwFlags );
파라미터
- hAsyncHandle
- [in] 정지하는 비동기 처리의 핸들. 이 핸들은, 비동기의 처리를 지원 하는 메서드를 호출했을 때에 받는다. 모든 요구 또는 특정의 종류의 비동기 처리를 정지하려면 , 이 값을 NULL 로 설정한다. 특정의 핸들이 지정되고 있는 경우,dwFlags 파라미터는 0 으로 설정할 필요가 있다. DPNCANCEL_PLAYER_SENDS 플래그의 1 개를 dwFlags 파라미터로 지정했을 경우,hAsyncHandle 는 0 으로 설정해, player의 DPNID 를 설정할 필요가 있다.
- dwFlags
- [in] 취소하는 비동기 요구를 지정하는 플래그. 다음의 몇개의 플래그를 설정할 수 있다.
- DPNCANCEL_ENUM
- 모든 비동기 IDirectPlay8Peer::EnumHosts 요구를 취소한다. IDirectPlay8Peer::EnumHosts 메서드로부터 돌려받는 핸들을 지정하는 것에 의해, 단일의 IDirectPlay8Peer::EnumHosts 요구를 취소할 수가 있다.
- DPNCANCEL_CONNECT
- 비동기 IDirectPlay8Peer::Connect 요구를 취소한다.
- DPNCANCEL_SEND
- 비동기 IDirectPlay8Peer::SendTo 요구를 취소한다.
- DPNCANCEL_PLAYER_SENDS
- hAsyncHandle 파라미터로 지정된 player용의 비동기 IDirectPlay8Peer::SendTo 요구를 모두 취소한다.
- DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW
- hAsyncHandle 파라미터로 지정된 player용의 우선 순위의 낮은 비동기 IDirectPlay8Peer::SendTo 요구를 취소한다.
- DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL
- hAsyncHandle 파라미터로 지정된 player용의, 보통의 우선 순위의 비동기 IDirectPlay8Peer::SendTo 요구를 취소한다.
- DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH
- hAsyncHandle 파라미터로 지정된 player용의 우선 순위의 높은 비동기 IDirectPlay8Peer::SendTo 요구를 취소한다.
- DPNCANCEL_ALL_OPERATIONS
- IDirectPlay8Peer::Connect,IDirectPlay8Peer::SendTo, 및 IDirectPlay8Peer::EnumHosts 의 모든 비동기 처리를 취소한다.
반환값
성공했을 경우는 S_OK 를 돌려주어, 실패했을 경우는 다음의 몇개의 에러값을 돌려준다.
DPNERR_CANNOTCANCEL 처리를 취소할 수가 없었다. DPNERR_INVALIDFLAGS 이 메서드에 건네진 플래그는 무효이다. DPNERR_INVALIDHANDLE 지정된 핸들은 무효이다.
주의
이 메서드를 사용해,IDirectPlay8Peer::Connect,IDirectPlay8Peer::SendTo, 및 IDirectPlay8Peer::EnumHosts 의 각 메서드의 비동기 처리를 취소할 수가 있다. Microsoft® DirectPlay® 는, 다른 비동기 처리의 취소를 지원 하고 있지 않다.
IDirectPlay8Peer::SendTo 메서드로부터 돌려주어진 핸들을 지정 하면, 송신 요구를 취소할 수가 있다. 그 경우도,DPN_MSGID_SEND_COMPLETE 또는 DPN_MSGID_CONNECT_COMPLETE 시스템 메시지는, DPNSEND_NOCOMPLETE 플래그를 설정하지 않고 송신된 비동기의 송신 요구 마다, 애플리케이션 메시지 핸들러에 송신된다. 이 메서드로 삭제된 송신 요구는,DPN_MSGID_SEND_COMPLETE 메시지의 hResultCode 멤버에 DPNERR_USERCANCEL 를 돌려준다.
dwFlags 에 DPNCANCEL_ALL_OPERATIONS, DPNCANCEL_CONNECT, DPNCANCEL_SEND, 또는 DPNCANCEL_ENUM 의 플래그를 설정했을 경우, DirectPlay 는 모든 일치하는 처리를 취소하려고 한다. 이 메서드는, 취소해에 실패한 처리가 있는 경우, 일부의 취소가 성공하고 있어도 에러를 돌려준다.
dwFlags 에 DPNCANCEL_PLAYER_SENDS 플래그의 1 개를 설정했을 경우,hAsyncHandle 에 player의 DPNID 를 지정할 필요가 있다. 이 경우,dpnid 파라미터로 지정한 DPNID 가 hAsyncHandle 파라미터로 설정한 값과 일치하는 미처리의 IDirectPlay8Peer::SendTo 요구는 모두 삭제된다.
주 이 메서드가 값을 돌려줄 때까지, 완료 메시지는 도착하지 않는 경우가 있다. DPN_MSGID_SEND_COMPLETE,DPN_MSGID_CONNECT_COMPLETE, 또는 DPN_MSGID_ASYNC_OP_COMPLETE 메시지를 받아들일 때까지, 처리가 종료했다고 봐서는 안 된다.