Приветствую ВСЕХ!!!
Подскажите уважаемые Знатоки, чем воспользоваться для решения вот такой задачи!
Написан драйвер под ХР, для платы PCI еще годов так n назад, в nuMega… и встал вопрос переноса его на win7…
Кто-то ХР дрова переносил, сталкивался с проблемами и какими подручными средствами лучше всего воспользоваться?!
пересмотрел примеры из ДДК и стряпал первый пробник...
и пытаюсь прочитать с помощью
Код
NTSTATUS MDMAI_IO_READ_Handler(PIRP Irp, PIO_STACK_LOCATION pIoStackIrp, UINT *pdwDataWritten)
{
NTSTATUS status = STATUS_UNSUCCESSFUL;
PCHAR pInputBuffer;
PCHAR pOutputBuffer;
PCHAR pReturnData;
UINT dwDataRead = 0, dwDataWritten = 0;
UINT dwDataSize = sizeof(ULONG);
USHORT Port;
DbgPrint("ReadDirectOutIO Called \r\n");
pInputBuffer = (PCHAR)Irp->AssociatedIrp.SystemBuffer;
pOutputBuffer = NULL;
if(Irp->MdlAddress)
{
pOutputBuffer = (PCHAR)MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);
}
if(pInputBuffer && pOutputBuffer)
{
if(pIoStackIrp->Parameters.DeviceIoControl.OutputBufferLength >= dwDataSize)
{
Port = pInputBuffer[0];
pReturnData = (PCHAR)READ_PORT_UCHAR((PUCHAR)Port); // ну очень смущает!!!!!!!!!
/*
* We use "RtlCopyMemory" in the kernel instead of memcpy.
* RtlCopyMemory *IS* memcpy, however it's best to use the
* wrapper in case this changes in the future.
*/
RtlCopyMemory(pOutputBuffer, pReturnData, dwDataSize);
*pdwDataWritten = dwDataSize;
status = STATUS_SUCCESS;
}
else
{
*pdwDataWritten = dwDataSize;
status = STATUS_BUFFER_TOO_SMALL;
}
}
return status;
}
в результате ни чего и ошибки!(
направьте на путь истинный!
Спасибо!!!