Bagikan melalui


Kontrol Akses (WPD API)

Windows Driver Model (WDM) mendukung pembatasan akses perangkat melalui Daftar Kontrol Akses (ACL) pada Simpul Perangkat Plug and Play (PnP). Ini berarti bahwa vendor dan administrator jaringan dapat membatasi akses ke jenis perangkat apa pun. Ketika aplikasi membuka handel ke driver dengan memanggil IPortableDevice::Open, Manajer I/O driver memverifikasi apakah pengguna yang diberikan memiliki akses yang diperlukan, dan demikian pula melakukan pemeriksaan akses ketika IOCTL dikirim ke driver dari handel tersebut.

Misalnya, administrator jaringan dapat membatasi pengguna Tamu untuk akses baca-saja untuk perangkat portabel, sementara mereka dapat memberikan akses baca/tulis kepada pengguna terautentikasi. Dalam hal ini, menyiratkan bahwa jika Tamu mengeluarkan perintah WPD yang memerlukan akses baca/tulis (seperti Hapus Objek); itu akan gagal dengan Akses Ditolak, sedangkan jika pengguna Terautentikasi mengeluarkan perintah yang sama, itu akan berhasil.

Entri Kebijakan Grup untuk mengontrol akses ke penyimpanan yang dapat dilepas dan perangkat portabel sebenarnya tidak lebih dari cara mudah bagi Administrator untuk menerapkan ACL simpul perangkat PnP ke seluruh kelas perangkat pada satu waktu (misalnya, menerapkan Kebijakan Grup "Tolak Akses Tulis ke Perangkat Portabel" akan menyesuaikan ACL semua perangkat WPD untuk menolak akses tulis).

Kode Kontrol I/O dalam WPD

Aplikasi WPD berkomunikasi dengan driver dengan membuka handel perangkat dan mengirim Kode Kontrol I/O (IOCTL). IOCTL ini terdiri dari empat bagian:

  1. Jenis Perangkat
  2. Kode Fungsi
  3. Metode Buffer
  4. Jenis Akses

Bagian keempat, Jenis Akses, menentukan persyaratan akses tertentu untuk perintah yang diberikan. Manajer I/O driver menggunakan data ini untuk melakukan pemeriksaan Daftar Kontrol Akses (ACL).

Jadi jika IOCTL didefinisikan sebagai:

    #define MY_READ_IOCTL CTL_CODE(FILE_DEVICE_X, CONTROL_FUNCTION_Y, METHOD_BUFFERED, FILE_READ_ACCESS)

Manajer I/O driver akan memeriksa bahwa pemilik handel perangkat memiliki akses baca ke perangkat ketika pesan ini dikirim.

Dan, jika IOCTL didefinisikan sebagai:

    #define MY_READWRITE_IOCTL CTL_CODE(FILE_DEVICE_X, CONTROL_FUNCTION_Z, METHOD_BUFFERED, (FILE_READ_ACCESS | FILE_WRITE_ACCESS))

Manajer I/O driver akan memeriksa bahwa pemilik handel perangkat memiliki akses baca/tulis ke perangkat ketika pesan ini dikirim.

Gambaran Umum Aplikasi

IPortableDevice::Open

IPortableDevice::SendCommand