Методы ACPI. Как их использовать
От: Аноним  
Дата: 12.01.08 12:47
Оценка:
Необходимо разработать драйвер, обрабатывающий методы ACPI.
В примерах кода из DDK указаны методы _FDE и _DMS и примеры
их использования.


        methodName = (ULONG) 'SMD_' ;

        argCount = 3 ;

        argType[0] = ACPI_METHOD_ARGUMENT_INTEGER ;
        argType[1] = ACPI_METHOD_ARGUMENT_BUFFER ;
        argType[2] = ACPI_METHOD_ARGUMENT_BUFFER ;

        argSize[0] = 0 ; // Don't need to set, assumed to be sizeof(ULONG)
        argSize[1] = sizeof(whatever)
        argSize[2] = sizeof(whatever)

        param = 5 ;
        argData[0] = &param ;
        argData[1] = NULL ; // Assumed to be all zero's.
        argData[2] = pDataBlock ;

        returnBufferMaxSize = 0; //Integer return, no need to set.

        status = DeviceQueryACPI_SyncExecMethod (
                DeviceObject,
                methodName,
                argCount,
                argType,
                argSize,
                argData,
                ACPI_METHOD_ARGUMENT_INTEGER, // We expect an integer returned
                returnBufferMaxSize,
                &result,
                NULL,
                NULL
                ) ;

        if (NT_SUCCESS(status)) {
                // result is valid

                // If we were reading buffers back (ie, expected type is
                // ACPI_METHOD_ARGUMENT_BUFFER or ACPI_METHOD_ARGUMENT_STRING)
                // you must free the buffer if you passed in a pointer for
                // it.
                // N.B. : The buffer is allocated from the paged pool.
        }

    OUT PVOID *ReturnBuffer OPTIONAL
    )


Однако эти методы не документированы. Где можно найти подробное описание методов ACPI и аспектов их использования?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.