Fungsi IoCheckShareAccess (wdm.h)
Rutinitas IoCheckShareAccess dipanggil oleh driver sistem file (FSD) atau driver tingkat tertinggi lainnya untuk memeriksa apakah akses bersama ke objek file diizinkan.
NTSTATUS IoCheckShareAccess(
[in] ACCESS_MASK DesiredAccess,
[in] ULONG DesiredShareAccess,
[in, out] PFILE_OBJECT FileObject,
[in, out] PSHARE_ACCESS ShareAccess,
[in] BOOLEAN Update
);
[in] DesiredAccess
Menentukan nilai ACCESS_MASK yang menunjukkan jenis akses yang diinginkan ke FileObject yang diberikan untuk permintaan terbuka saat ini. Driver menghitung nilai parameter ini dengan mengambil akses yang diminta dalam permintaan IRP_MJ_CREATE lalu menerapkan SeAccessCheck untuk setiap deskriptor keamanan untuk menentukan akses aktual yang diberikan. Jika akses yang diberikan lebih ketat daripada akses yang diinginkan, maka itu adalah kesalahan, dan driver harus menyelesaikan IRP saat ini dengan status STATUS_ACCESS_DENIED. (Perhatikan bahwa SeAccessCheck menghapus bit MAXIMUM_ALLOWED dalam akses yang diberikan; pastikan untuk tidak menggunakan bit itu saat membandingkan akses yang diinginkan dengan akses yang diberikan.) Driver kemudian melewati akses yang diberikan sebagai nilai DesiredAccess.
[in] DesiredShareAccess
Menentukan jenis akses bersama yang diinginkan ke FileObject untuk permintaan terbuka saat ini. Nilai parameter ini biasanya sama dengan ShareAccess diteruskan ke sistem file atau driver tingkat tertinggi oleh manajer I/O ketika permintaan terbuka dibuat. Nilai ini bisa nol, atau kombinasi apa pun dari yang berikut ini:
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE
[in, out] FileObject
Penunjuk ke objek file yang akan memeriksa akses untuk permintaan terbuka saat ini.
[in, out] ShareAccess
Penunjuk ke struktur data akses berbagi umum yang terkait dengan FileObject. Driver harus memperlakukan struktur ini sebagai buram.
[in] Update
Menentukan apakah akan memperbarui status akses berbagi untuk FileObject. Nilai Boolean TRUE berarti rutinitas ini akan memperbarui informasi akses berbagi untuk objek file jika permintaan terbuka diizinkan.
IoCheckShareAccess mengembalikan STATUS_SUCCESS jika akses pemohon ke objek file kompatibel dengan cara saat ini terbuka. Jika permintaan ditolak karena pelanggaran berbagi, maka STATUS_SHARING_VIOLATION dikembalikan.
IoCheckShareAccess memeriksa permintaan buka objek file untuk menentukan apakah jenis akses yang diinginkan dan bersama yang ditentukan kompatibel dengan cara objek file saat ini diakses oleh pembukaan lain.
Sistem file mempertahankan status tentang file melalui struktur yang disebut blok kontrol file (FCB). SHARE_ACCESS adalah struktur yang menjelaskan bagaimana file saat ini diakses oleh semua terbuka. Status ini terkandung dalam FCB sebagai bagian dari status terbuka untuk setiap objek file. Setiap objek file seharusnya hanya memiliki satu struktur akses berbagi. Driver tingkat tertinggi lainnya mungkin memanggil rutinitas ini untuk memeriksa akses yang diminta ketika objek file yang mewakili objek perangkat driver tersebut dibuka.
IoCheckShareAccess bukanlah operasi atom. Oleh karena itu, driver yang memanggil rutinitas ini harus melindungi objek file bersama yang diteruskan ke IoCheckShareAccess dengan cara semacam kunci, seperti mutex atau kunci sumber daya, untuk mencegah kerusakan jumlah akses bersama.
Syarat | Nilai |
---|---|
klien minimum yang didukung | Tersedia dimulai dengan Windows 2000. |
Platform Target | Universal |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
aturan kepatuhan DDI | HwStorPortProhibitedDIs (storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm) |