linux 驅(qū)動(dòng)開(kāi)發(fā) 編寫(xiě)linux系統(tǒng)驅(qū)動(dòng)函數(shù)中的IOCTL函數(shù)時(shí),CMD參數(shù)為什么要使用幻數(shù)?
編寫(xiě)linux系統(tǒng)驅(qū)動(dòng)函數(shù)中的IOCTL函數(shù)時(shí),CMD參數(shù)為什么要使用幻數(shù)?Linux驅(qū)動(dòng)程序上IOCTL函數(shù)的CMD由一個(gè)32位字段組成,它分為四個(gè)部分:1)類型或幻數(shù),8位,2)序數(shù),8位,3)方
編寫(xiě)linux系統(tǒng)驅(qū)動(dòng)函數(shù)中的IOCTL函數(shù)時(shí),CMD參數(shù)為什么要使用幻數(shù)?
Linux驅(qū)動(dòng)程序上IOCTL函數(shù)的CMD由一個(gè)32位字段組成,它分為四個(gè)部分:1)類型或幻數(shù),8位,2)序數(shù),8位,3)方向,即從內(nèi)核空間到用戶空間,或從用戶空間到內(nèi)核空間,4)大小,指示需要讀取和寫(xiě)入的參數(shù)大小。通常,Linux內(nèi)核會(huì)自動(dòng)過(guò)濾CMD的一些非法定義。例如,如果定義1,2,并且CMD為1,2,則沒(méi)有類型、數(shù)字、方向和大小。Linux內(nèi)核將自動(dòng)過(guò)濾出IOCTL請(qǐng)求,如果IOCTL根本沒(méi)有轉(zhuǎn)到驅(qū)動(dòng)程序IOCTL,那么它將返回一個(gè)錯(cuò)誤。