1
내가 다음 코드를 사용하여 문제가 제안 : 나는 스택 아래 newRequest을 보낼 수 없습니다스택 아래로 다른 요청을 전달하는 방법은 무엇입니까? 제목으로
EvtDeviceIoWrite(
IN WDFQUEUE Queue,
IN WDFREQUEST Request,
IN size_t Length
) {
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = WdfIoQueueGetDevice(Queue);
status = WdfRequestCreate(&attributes, WdfDeviceGetIoTarget(WdfIoQueueGetDevice(Queue)), &newRequest);
if (!NT_SUCCESS(status)) {
KdPrint(("Serial: failed 0x%x\n", status));
WdfRequestComplete(Request, status);
return;
}
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = newRequest;
status = WdfMemoryCreate(&attributes, NonPagedPool, 'MyPl', 10, &newmem, &newbuf);
if (!NT_SUCCESS(status)) {
KdPrint(("Serial: failed 0x%x\n", status));
WdfRequestComplete(Request, status);
return;
}
WDF_REQUEST_SEND_OPTIONS_INIT(&options,
WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET);
ret = WdfRequestSend(newRequest, WdfDeviceGetIoTarget(WdfIoQueueGetDevice(Queue)), &options);
}
if (ret == FALSE) {
status = WdfRequestGetStatus(newRequest);
KdPrint(("WdfRequestSend failed: 0x%x\n", status));
WdfRequestComplete(Request, status);
}
을 ... RET 값은 "FALSE"이고 상태는 STATUS_INVALID_DEVICE_STATE입니다. 장치를 적절한 상태로 만드는 방법은 무엇입니까?
link가 제안한대로 모든 작업을 완료했습니다. 그래서 요약하면 로컬 IO 스택 아래로 요청을 보낼 수 없습니다. 대상 IO는 적절한 상태가 아니며 작동 방법을 모릅니다.