IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Аноним  
Дата: 14.01.08 06:58
Оценка:
Запустил драйвер fdc.sys из WINDDK. Функция FdcQueryDeviceRelations возвращает STATUS_OBJECT_NOT_FOUND для
ACPI-метода _FDE.


   // Tell the plug and play system about all the PDOs.
    //
    // There might also be device relations below and above this FDO,
    // so, be sure to propagate the relations from the upper drivers.
    //

    //
    //  The current number of PDOs
    //
    relationCount = ( Irp->IoStatus.Information == 0 ) ? 0 :
        ((PDEVICE_RELATIONS) Irp->IoStatus.Information)->Count;

    //
    //  *ACPI*  Determine if we are no an ACPI machine and, if so, whether it
    //  supports the _FDE method (Floppy Device Enumerate).
    //
    ntStatus = DeviceQueryACPI_SyncExecMethod( fdoExtension->TargetObject,
                                               'EDF_',
                                               0,
                                               NULL,
                                               NULL,
                                               NULL,
                                               ACPI_METHOD_ARGUMENT_BUFFER,
                                               sizeof(ACPI_FDE_ENUM_TABLE),
                                               NULL,
                                               &returnSize,
                                               &returnBuffer );
                                               

    FdcDump( FDCSHOW, ("FDC-ACPI _EDF return size = %d\n", returnS


В чем может заключаться ошибка? Такое поведение у меня повторяется на двух машинах под WinXP. Возможно, нужно предпринять шаги для настройки ACPI. Если да, то плиз опишите их.
Re: IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Аноним  
Дата: 14.01.08 12:45
Оценка:
Правила форума нарушены.
— оверквотинг
Правила можно найти в разделе FAQ данного форума и\или ресурса.
Нарушение правил может повлечь за собой санкции, описанные там же — модератор

Что, никто не тестировал IOCTL_ACPI_EVAL_METHOD?
по поводу вот таких вопросов и почему они обычно не способствуют успеху предприятия — неплохо написано в тексте Как правильно задавать вопросы — модератор
Re[2]: IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Аноним  
Дата: 15.01.08 15:50
Оценка:
Здравствуйте, Аноним, Вы писали:



А>Что, никто не тестировал IOCTL_ACPI_EVAL_METHOD?


Это вопрос не в назидание. Как я посмотрел по Интернет, по теме очень мало постов.
Как я понимаю, этот вопрос детально не рассматривался из-за его неактуальности.
Re[3]: IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Andrew.W Worobow https://github.com/Worobow
Дата: 15.01.08 17:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>Что, никто не тестировал IOCTL_ACPI_EVAL_METHOD?

...
А>Как я понимаю, этот вопрос детально не рассматривался из-за его неактуальности.

Видимо да, но вы собственно не указали проблему. Может у вас и нет флоппи на тестируемых компьютерах. Непонятно в чем ваша проблема. Опишите подробнее — что вы хотите получить, и что не получается.
Не все кто уехал, предал Россию.
Re[4]: IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Аноним  
Дата: 16.01.08 10:06
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Здравствуйте, Аноним, Вы писали:


А>>>Что, никто не тестировал IOCTL_ACPI_EVAL_METHOD?

AWW>...
А>>Как я понимаю, этот вопрос детально не рассматривался из-за его неактуальности.

AWW>Видимо да, но вы собственно не указали проблему. Может у вас и нет флоппи на тестируемых компьютерах. Непонятно в чем ваша проблема. Опишите подробнее — что вы хотите получить, и что не получается.


Проблема в том, что функция DeviceQueryACPI_SyncExecMethod возвращает STATUS_OBJECT_NOT_FOUND, хотя предполагается возврат STATUS_SUCCESS. На тестируемой машине был флоппи и один из девайсов fdc был приаттачен к девайсу ACPI драйвера. Метод _FDE возвращает известные флоппи-девайсы.
Re[5]: IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Andrew.W Worobow https://github.com/Worobow
Дата: 16.01.08 10:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Проблема в том, что функция DeviceQueryACPI_SyncExecMethod возвращает STATUS_OBJECT_NOT_FOUND, хотя предполагается возврат STATUS_SUCCESS. На тестируемой машине был флоппи и один из девайсов fdc был приаттачен к девайсу ACPI драйвера.

Вы повторяете ваше первое сообщение, из которого так и

Непонятно в чем ваша проблема. Опишите подробнее — что вы хотите получить, и что не получается.


Вы хотите использовать какую-то не известнйю мне функцию DeviceQueryACPI_SyncExecMethod, что это такое я не знаю. К сожалению.

А>Метод _FDE возвращает известные флоппи-девайсы.


Про _FDE мы в курсе, но вот только он возвращает приатаченные устройства, а не известные...

9.10.1 _FDE (Floppy Disk Enumerate)
Enumerating devices attached to a floppy disk controller is a time-consuming function. In order to speed up
the process of floppy enumeration, ACPI defines an optional enumeration object that is defined directly
under the device object for the floppy disk controller. It returns a buffer of five 32-bit values. The first four
values are Boolean values indicating the presence or absence of the four floppy drives that are potentially
attached to the controller. A non-zero value indicates that the floppy device is present. The fifth value
returned indicates the presence or absence of a tape controller. Definitions of the tape presence value can be
found in Table 9-7.



ACPI спецификация.
Не все кто уехал, предал Россию.
Re[6]: IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Аноним  
Дата: 16.01.08 12:23
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

Правила форума нарушены.
— оверквотинг
Правила можно найти в разделе FAQ данного форума и\или ресурса.
Нарушение правил может повлечь за собой санкции, описанные там же — модератор

AWW>ACPI спецификация.


DeviceQueryACPI_SyncExecMethod формирует запрос с кодом IOCTL_ACPI_ASYNC_EVAL_METHOD из отсылает ACPI-драйверу.
В ответ драйвер должен вернуть результаты выполения _FDE.


   irp = IoAllocateIrp(targetDeviceObject->StackSize, FALSE);
    if (irp == NULL) {
        status = STATUS_NO_MEMORY;
        goto getout;
    }

    irp->AssociatedIrp.SystemBuffer = cmInputData;

    ASSERT ((IOCTL_ACPI_ASYNC_EVAL_METHOD & 0x3) == METHOD_BUFFERED);
    irp->Flags = IRP_BUFFERED_IO | IRP_INPUT_OPERATION;
    irp->IoStatus.Status = STATUS_NOT_SUPPORTED ;

    irpSp = IoGetNextIrpStackLocation( irp );

    irpSp->MajorFunction = IRP_MJ_DEVICE_CONTROL;
    irpSp->Parameters.DeviceIoControl.OutputBufferLength = cmOutputDataSize;
    irpSp->Parameters.DeviceIoControl.InputBufferLength = cmInputDataSize;
    irpSp->Parameters.DeviceIoControl.IoControlCode = IOCTL_ACPI_ASYNC_EVAL_METHOD;

    irp->UserBuffer = cmOutputData ;

    context->DeviceObject       = DeviceObject;
    context->TargetDeviceObject = targetDeviceObject;

    IoSetCompletionRoutine(
        irp,
        DeviceQueryACPI_AsyncExecMethod_CompletionRoutine,
        context,
        TRUE,
        TRUE,
        TRUE
        );

    IoCallDriver(targetDeviceObject, irp);
Re[7]: IOCTL_ACPI_ASYNC_EVAL_METHOD возвращает ошибку
От: Аноним  
Дата: 24.01.08 23:02
Оценка:
Какой DKK используется ?
В последних (KMDF 1.1, 1.5, 1.7) я не нашел STATUS_OBJECT_NOT_FOUND
Какой вызов вернул эту ошибку — IoCallDriver ?
Можно предположить, что targetDeviceObject таки не существует.

Какая у вас версия Windows ?
В описании IOCTL_ACPI_ASYNC_EVAL_METHOD указано:
Requirements
Versions: Windows Server 2008 and Windows Vista
Правила форума нарушены.
— оверквотинг
Правила можно найти в разделе FAQ данного форума и\или ресурса.
Нарушение правил может повлечь за собой санкции, описанные там же — модератор
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.