Gambaran Umum Penyedia
Penyedia adalah aplikasi mode pengguna yang memelihara dan memahami penyimpanan data dukungan. Penyedia mengimplementasikan panggilan balik ProjFS dan menggunakan PROjFS API untuk memproyeksikan penyimpanan data ini ke dalam sistem file di mana ia muncul untuk pengguna sebagai file dan direktori. Penyimpanan dukungan penyedia mungkin lokal untuk sistem pengguna, atau mungkin terletak dari jarak jauh.
Proyeksi Data
Bagian dari sistem file yang dimiliki penyedia, tempat datanya diproyeksikan, berakar pada direktori yang disebut "akar virtualisasi". Ketika penyedia ingin mulai memproyeksikan datanya, ia memulai "instans virtualisasi", yang merupakan objek yang mengelola komunikasi antara penyedia dan ProjFS untuk kumpulan file dan direktori yang terletak di bawah akar virtualisasi tertentu. Setiap file dan direktori yang merupakan turunan dari akar virtualisasi yang belum dibuat secara lokal oleh pengguna diwujudkan oleh penyedia melalui PROjFS API. Item ini dimulai sebagai file dan direktori virtual, yang berarti bahwa item tersebut tidak ada di perangkat penyimpanan lokal pengguna, tetapi disuntikkan ke dalam hasil enumerasi oleh ProjFS. Saat item dibuka dan dibaca, ProjFS memanggil panggilan balik yang diterapkan oleh penyedia untuk meminta data, dan penyedia menggunakan API ProjFS untuk mengirim data tersebut ke penyimpanan lokal tempat item tersebut di-cache untuk akses berikutnya. Jika tampilan pengguna dari penyimpanan data dukungan perlu berubah, misalnya jika konten penyimpanan data telah berubah, penyedia dapat menggunakan API ProjFS untuk memperbarui atau menghapus item lokal untuk mencerminkan tampilan baru penyimpanan data.
Kode pengembalian panggilan balik
Setiap panggilan balik mencantumkan sejumlah kemungkinan nilai pengembalian khusus untuk panggilan balik tersebut. Selain nilai pengembalian yang tercantum untuk panggilan balik tertentu, panggilan balik juga dapat mengembalikan kode kesalahan tertentu lainnya. Ini adalah daftar lengkap kode kesalahan yang dapat dikembalikan oleh panggilan balik:
Kode Kesalahan | Makna |
---|---|
S_OK | Operasi Berhasil |
E_OUTOFMEMORY | Gagal mengalokasikan memori yang diperlukan. |
HRESULT_FROM_WIN32(ERROR_IO_PENDING) | Penyedia ingin menyelesaikan operasi di lain waktu. |
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) | Buffer yang diteruskan ke panggilan balik terlalu kecil. |
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) | File tidak ada di penyimpanan cadangan penyedia. |
HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER) | Argumen panggilan balik tidak valid. Misalnya, ID enumerasi tidak sesuai dengan sesi enumerasi aktif. |
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) | Penyedia ingin mencegah operasi, seperti mengganti nama atau menghapus, agar tidak terjadi. |
Panggilan balik juga dapat mengembalikan kesalahan yang mungkin mereka terima dari panggilan ke API ProjFS. Jika panggilan balik mengembalikan kode kesalahan yang tidak ada dalam daftar sebelumnya atau yang tidak berasal dari API ProjFS, ProjFS akan mengembalikannya ke sistem file seperti yang STATUS_INTERNAL_ERROR.