главный вопрос:
Как мне получить параметры DeviceIoControl'a в самом драйвере, т.е.
NTSTATUS DrvCtr(PDEVICE_OBJECT devobj,PIRP irp)
{
PVOID InBuf=??,OutBuf=??;
ULONG ControlCode=??;
На половину своих вопросов я уже нашёл ответ, но один я так и не понял.... ГДЕ ВЗЯТЬ ВХОДНОЙ БУФЕР?
ControlCode = IrpStack->Parameters.DeviceIoControl.IoControlCode;
ULONG InBufSize = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
ULONG OutBufSize = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
ULONG Method = ControlCode & 0x03;
PVOID InBuf,OutBuf;
if (Method == METHOD_BUFFERED)
OutBuf = Irp->AssociatedIrp.SystemBuffer;
else
OutBuf = Irp->UserBuffer;
InBuf = ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
если читать из OutBuf'a то всё работает, но ради правильности входные данные должны быть входными а не и тем и другим...