2012-09-01 12 views
5

मेरे पास ड्राइवर स्रोत कोड है, और इसे समझें। मैं उपयोगकर्ता मोड के तहत एक ऐप लिखता हूं। मैं ड्राइवर के कार्यों को कॉल करना चाहता हूं। मुझे कैसे करना चाहिए?ड्राइवर का मेरा सी ++ ऐप कॉल इंटरफ़ेस कैसा है?

कुछ ड्राइवर हेडर कोड:

... 
BYTE ReadRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont); 

BYTE WriteRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont); 
... 

ड्राइवर सीपीपी कोड टुकड़े:

BYTE ReadRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont) 
{ 
..... 
} 

//----------------------------------------------------------------------------- 
BYTE WriteRegister(DEVICE_CONTEXT *pDevice, BYTE SlavAddr, BYTE SlavMode, WORD RegAddr, BYTE* pData, BYTE DataCont) 
{ 
.... 
} 

उत्तर

6

आप सीधे कॉल नहीं कर सका कर्नेल-मोड ड्राइवर एपीआई समारोह। आप इसके बजाय IOCTL एपीआई का उपयोग करेंगे। इसके तर्क ढेर के सूचक के रूप समारोह के बारे में जानकारी में गुजर के नाम से जाना है, साथ ही,

  1. उपयोगकर्ता के मोड आवेदन पदों एक IOCTL अनुरोध:

    सामान्य कार्यप्रवाह परिदृश्य this की तरह है।

  2. कर्नेल-मोड ड्राइवर अनुरोध डिस्पैच, प्रतियां अपने स्वयं के ढेर पर तर्क, फ़ंक्शन को कॉल करने, और IOCTL उत्पादन बफर में वापस फोन करने वाले के लिए परिणाम गुजरता है।
  3. कॉलर आईओसीटीएल ऑपरेशन के परिणाम उठाता है और सामान्य डीएलएल फ़ंक्शन कॉल के बाद होता है।
+0

धन्यवाद। मुझे कर्नेल-मोड के बारे में कुछ दस्तावेज़ पढ़ना चाहिए। – Wayman

संबंधित मुद्दे