Bagikan melalui


Fungsi RpcAsyncCancelCall (rpcasync.h)

Klien memanggil fungsi RpcAsyncCancelCall untuk membatalkan panggilan asinkron.

Sintaks

RPC_STATUS RpcAsyncCancelCall(
  PRPC_ASYNC_STATE pAsync,
  BOOL             fAbort
);

Parameter

pAsync

Arahkan ke struktur RPC_ASYNC_STATE yang berisi informasi panggilan asinkron.

fAbort

Jika TRUE, panggilan akan segera dibatalkan. Jika FALSE, tunggu hingga server menyelesaikan panggilan.

Nilai kembali

Nilai Makna
RPC_S_OK
Permintaan pembatalan diproses.
RPC_S_INVALID_ASYNC_HANDLE
Handel asinkron tidak valid.
 
Catatan Untuk daftar kode kesalahan yang valid, lihat Nilai Pengembalian RPC.
 

Keterangan

Ada dua cara bagi klien untuk meminta pembatalan panggilan asinkron—abortif dan nonabortive. Dalam pembatalan abortif (fAbortCalltrue), fungsi RpcAsyncCancelCall mengirimkan pemberitahuan pembatalan ke sisi server dan klien dan panggilan asinkron segera dibatalkan, tanpa menunggu respons dari server. Perhatikan bahwa dalam aplikasi multithreaded, panggilan asinkron hanya dapat dibatalkan oleh klien setelah utas yang berasal dari panggilan telah kembali darinya dengan sukses. Ini diperlukan untuk memastikan bahwa panggilan tidak akan dibatalkan secara asinkron oleh utas lain setelah gagal secara sinkron saat dikeluarkan. Secara umum, jika panggilan asinkron gagal secara sinkron, panggilan tersebut tidak boleh dibatalkan secara asinkron. Aplikasi klien harus memastikan perilaku ini jika panggilan dapat dikeluarkan dan dibatalkan pada utas yang berbeda.

Server memeriksa permintaan pembatalan dari klien dengan memanggil RpcServerTestCancel. Tergantung pada status panggilan pada saat permintaan pembatalan dikeluarkan dan seberapa sering server memeriksa pembatalan, panggilan mungkin atau mungkin tidak selesai secara normal. Aplikasi klien harus memanggil RpcAsyncCompleteCall untuk menyelesaikan panggilan dan nilai pengembalian akan menunjukkan apakah panggilan selesai, gagal, atau dibatalkan. Namun, klien masih harus menunggu panggilan asli selesai sebelum memanggil RpcAsyncCompleteCall.

Dalam pembatalan nonabortive (fAbortCall adalah FALSE) fungsi RpcAsyncCancelCall memberi tahu server pembatalan dan klien menunggu server menyelesaikan panggilan. Tidak ada mekanisme waktu habis bawaan. Jika Anda ingin panggilan ke waktu habis, klien harus terlebih dahulu mengeluarkan pembatalan nonabortif menggunakan mekanisme waktu habisnya sendiri. Jika panggilan habis, maka klien dapat mengeluarkan pembatalan yang dibatalkan secara abortif.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows 2000 Server [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header rpcasync.h (termasuk Rpc.h)
Pustaka Rpcrt4.lib
DLL Rpcrt4.dll

Lihat juga

RPC asinkron

RPC_ASYNC_STATE

RpcAsyncAbortCall

RpcAsyncCompleteCall

RpcAsyncGetCallHandle

RpcAsyncGetCallStatus

RpcAsyncInitializeHandle

RpcServerTestCancel