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.

Sintaks

NTSTATUS IoCheckShareAccess(
  [in]      ACCESS_MASK   DesiredAccess,
  [in]      ULONG         DesiredShareAccess,
  [in, out] PFILE_OBJECT  FileObject,
  [in, out] PSHARE_ACCESS ShareAccess,
  [in]      BOOLEAN       Update
);

Parameter

[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 yang 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

Arahkan ke objek file untuk memeriksa akses untuk permintaan terbuka saat ini.

[in, out] ShareAccess

Arahkan 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.

Mengembalikan nilai

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.

Keterangan

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 bukan operasi atomik. 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.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), IrqlIoPassive2(wdm), PowerIrpDDis(wdm)

Lihat juga

ACCESS_MASK

IoCreateFile

IoCreateFileEx

IoGetRelatedDeviceObject

IoRemoveShareAccess

IoSetShareAccess

IoUpdateShareAccess