Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
G/Ç denetim kodları içeren IRP'lerin güvenli bir şekilde işlenmesi, IOCTL kodlarının doğru şekilde tanımlanmasına ve sürücünün IRP ile aldığı parametreleri dikkatle incelemeye bağlıdır.
Yeni IOCTL kodları tanımlarken aşağıdaki kuralları kullanın:
Her zaman 0x800 eşit veya ondan büyük bir FunctionCode değeri belirtin.
Her zaman bir RequiredAccess değeri belirtin. Çağıranın erişim hakları yetersizse G/Ç yöneticisi IOCTL'leri göndermez.
Çağıranların çekirdek belleğinin özel olmayan alanlarını okumasına veya yazmasına izin veren IOCTL kodları tanımlamayın.
Bir sürücü içinde IOCTL kodlarını işlerken aşağıdaki kuralları kullanın:
Bir sürücünün dağıtım yordamları testinde IOCTL kodları alındığında her zaman 32 bit değerin tamamını test etmesi gerekir.
Sürücüler, G/Ç denetim kodunun tanımında RequiredAccess değeri tarafından belirtilenden daha sıkı erişim denetimini dinamik olarak gerçekleştirmek için IoValidateDeviceIoControlAccess kullanabilir.
Irp-AssociatedIrp.SystemBuffer> tarafından işaret edilen arabelleğin kapasitesini aşarak asla veri okumayın veya yazmayın. Bu nedenle, arabellek sınırlarını belirlemek için her zaman IO_STACK_LOCATION yapısında Parameters.DeviceIoControl.InputBufferLength veya Parameters.DeviceIoControl.OutputBufferLength öğesini denetleyin.
Sürücü tarafından tahsis edilmiş ve IOCTL isteği oluşturan bir uygulama için verileri içerecek olan arabellekleri her zaman sıfırlayın. Bu şekilde, hassas verileri yanlışlıkla uygulamaya kopyalamazsınız.
METHOD_IN_DIRECT ve METHOD_OUT_DIRECT aktarımları için yukarıdaki kuralları izleyin. Ayrıca, MmGetSystemAddressForMdlSafe fonksiyonunun dönüş değeri NULL ise, bu durum eşlemenin başarısız olduğunu veya sıfır uzunluklu bir arabellek sağlandığını belirtir.
METHOD_NEITHER aktarımları için Ne Arabelleğe Alınan Ne de Doğrudan G/Ç Kullanma bölümünde sağlanan kurallara uyun.