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が示唆するようにすべてを正しく行った。要約すると、ローカルI/Oスタックの要求を送信できません。ターゲットI/Oは適切な状態ではありません。そのI/Oをどのように動作させるかわかりません。