Bagikan melalui


DLL Klien Saluran Virtual

Klien aplikasi saluran virtual adalah DLL yang dimuat selama inisialisasi Layanan Desktop Jauh di komputer klien. DLL harus didaftarkan pada komputer klien. Untuk informasi selengkapnya, lihat Pendaftaran Klien Saluran Virtual.

DLL klien harus mengekspor fungsi VirtualChannelEntry , yang dipanggil Layanan Desktop Jauh selama inisialisasi. Titik entri VirtualChannelEntry menerima penunjuk ke struktur CHANNEL_ENTRY_POINTS . Struktur ini berisi pointer ke fungsi yang dipanggil DLL klien untuk mengakses saluran virtual.

Fungsi Deskripsi
VirtualChannelInit
Mendaftarkan nama saluran virtual yang akan digunakan oleh klien dan menyediakan fungsi panggilan balik VirtualChannelInitEvent di mana Layanan Desktop Jarak Jauh memberi tahu klien tentang peristiwa yang memengaruhi koneksi klien.
VirtualChannelBuka
Membuka akhir klien dari saluran virtual tertentu dan menyediakan fungsi panggilan balik VirtualChannelOpenEvent di mana Layanan Desktop Jarak Jauh memberi tahu klien tentang peristiwa yang memengaruhi saluran virtual.
VirtualChannelWrite
Menulis data ke saluran virtual. Layanan Desktop Jauh mengirimkan data ini ke akhir server saluran virtual. Akhir server memanggil fungsi WTSVirtualChannelRead untuk membaca data.
VirtualChannelClose
Menutup saluran virtual.

Fungsi VirtualChannelEntry DLL Anda harus memanggil fungsi VirtualChannelInit untuk menginisialisasi akses ke saluran virtual. Saat Anda memanggil VirtualChannelInit, Anda harus meneruskan penunjuk ke fungsi panggilan balik VirtualChannelInitEvent . Layanan Desktop Jauh memanggil fungsi panggilan balik ini ketika inisialisasi selesai dan sekali lagi ketika koneksi telah dibuat dengan server Host Sesi Desktop Jarak Jauh (Host Sesi RD).

Setelah koneksi dibuat, Anda dapat memanggil fungsi VirtualChannelOpen untuk membuka saluran virtual yang terdaftar oleh panggilan VirtualChannelInit . Panggilan VirtualChannelOpen menentukan penunjuk ke fungsi panggilan balik VirtualChannelOpenEvent Anda.

Setelah panggilan VirtualChannelOpen kembali, Anda dapat memanggil fungsi VirtualChannelWrite untuk menulis ke saluran virtual. Operasi tulis tidak sinkron, jadi Anda tidak boleh membebaskan atau menggunakan kembali buffer yang diteruskan ke VirtualChannelWrite sampai Layanan Desktop Jarak Jauh memanggil fungsi VirtualChannelOpenEvent Anda untuk menunjukkan bahwa operasi tulis telah selesai. Saat Anda memanggil VirtualChannelWrite, Anda dapat meneruskan sepotong data pengguna yang mengidentifikasi operasi tulis. Layanan Desktop Jarak Jauh meneruskan data pengguna ini kembali ketika memanggil VirtualChannelOpenEvent untuk memberi tahu Anda bahwa operasi telah selesai. Di akhir server saluran virtual, add-in server memanggil fungsi WTSVirtualChannelRead untuk membaca data.

Layanan Desktop Jarak Jauh juga memanggil fungsi VirtualChannelOpenEvent Anda saat data ditulis ke saluran virtual oleh modul server. Modul server memanggil fungsi WTSVirtualChannelWrite untuk menulis data ke akhir server saluran virtual.

Modul klien dan server dapat menulis blok data dengan ukuran apa pun ke saluran virtual. Namun, sebelum mengirim data, Layanan Desktop Jarak Jauh membagi data menjadi potongan CHANNEL_CHUNK_LENGTH byte. Layanan Desktop Jauh memanggil fungsi VirtualChannelOpenEvent Anda sekali untuk setiap potongan data, daripada membangun kembali data ke dalam blok ukuran asli. Setiap panggilan ke VirtualChannelOpenEvent menunjukkan ukuran gugus, ukuran total yang ditulis oleh server, dan apakah data merupakan awal, tengah, atau akhir blok yang ditulis oleh server.

Anda dapat memanggil fungsi VirtualChannelClose untuk menutup saluran. Namun, tidak perlu memanggilnya karena Layanan Desktop Jauh menutup semua saluran secara otomatis ketika klien terputus dari server.