0
我試圖從Windows中的用戶模式應用程序將幾個不同的信息傳遞給內核模式驅動程序。我不會假裝完全知道我在做什麼,所以如果我有任何根本性的誤解,澄清將不勝感激。通過IOCTL將結構傳遞給內核模式驅動程序
用戶模式應用程序(發送IOCTL到驅動程序):
typedef struct {
unsigned int write;
ULONG reg_addr;
ULONG reg_val;
} reg_parameters;
...
reg_parameters regvals;
regvals.write = 0;
regvals.reg_addr = 0xDEADBEEF;
regvals.reg_val = 0XBBBBBBBB;
ULONG value;
...
DeviceIoControl(driver,(ULONG)IOCTL_OMAPCONF_REG, ®vals, sizeof(regvals),
&value, sizeof(ULONG), &size, NULL);
內核模式驅動程序(讀取在由reg_val指定在位置reg_addr和存儲值存儲器):
NTSTATUS OmapConfDrvDispatch(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
PVOID ioBuffer;
....
ioBuffer = Irp->AssociatedIrp.SystemBuffer;
....
現在,問題:如何訪問驅動程序中ioBuffer
的各個結構成員?
例如,爲什麼不像ioBuffer.reg_addr
那麼簡單?
想法?
非常好,謝謝! – wanovak 2012-08-02 19:04:45