PDA

View Full Version : نحوه استفاده از یک درایور در دلفی ؟



Nima NT
پنج شنبه 15 بهمن 1388, 16:37 عصر
با عرض سلام و وقت به خیر
در دلفی چطور میتونم از یک درایور ( یک فایل با پسوند Sys ) استفاده کنم ؟ :متفکر:
ممنون میشم راهنمایی بفرمائید.

Felony
پنج شنبه 15 بهمن 1388, 18:52 عصر
منظورتون از استفاده چیه ؟ دقیقا میخواین چه استفاده ای از این فایل ها بکنید ؟

Nima NT
پنج شنبه 15 بهمن 1388, 20:04 عصر
درایور رو مجبورم برای عبور از یک سری محدودیت های سیستم عامل استفاده کنم ؛ منظورم این هست که در دلفی استاندارترین راه برای استفاده از یک درایور چیه ؟ یعنی چیزی نمیخوام که کارم راه بیافته ( مثل کد ) ؛ منبع یا دانشنامه ای اگر لطف کنید ممنون میشم.

vcldeveloper
شنبه 17 بهمن 1388, 00:12 صبح
درایور Kernel Mode باید یک رابط User Mode داشته باشه؛ یا یک DLL ایی، چیزی، که درخواست ها را از User Mode دریافت کنه، در Kernel Mode آنها را انجام بده، و سپس نتیجه را در User Mode برگشت بده؛ مثل کاری که APIهای ویندوز انجام میدند.

برای ارتباط یک درایور Kernel Mode با یک کد User Mode راه هایی وجود دارند که در فایل زیر مایکروسافت بهشون اشاره کرده:
http://download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/KM-UMGuide.doc

البته این فایل مربوط به نویسندگان درایور هست، نه استفاده کنندگان، ولی با مطالعه اش می تونید به مکانیزم های موجود برای ارتباط یک درایور Kernel Mode با کد User Mode آشنا بشید.

__Genius__
جمعه 28 اسفند 1388, 01:07 صبح
سلام ، نمیدونم نیما جان به نتیجه رسید کارتون یا خیر اما برای ارتباط با یک برنامه Sys و یا در واقع یک Kernel Mode Driver میتونید از IOCTL یا Input - Output Control ها استفاده کنید .
تابع استاندارد DeviceIoControl این اجازه رو به شما میده که وسیله کدهای CTL بتونید با Driver ارتباط برقرار کنید .


BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped
);