ACPI断点源代码版
NTSTATUS LOCAL RunContext(PCTXT pctxt)
{
while (!IsStackEmpty(pctxt))
{
CHKDEBUGGERREQ();
pfh = (PFRAMEHDR)pctxt->LocalHeap.pbHeapEnd;
ASSERT(pfh->pfnParse != NULL);
rc = pfh->pfnParse(pctxt, pfh, rc); 断点1:ACPI!RunContext+0x11f
if ((rc == AMLISTA_PENDING) || (rc == AMLISTA_DONE))
{
break;
}
}
else
{
ReleaseMutex(&gReadyQueue.mutCtxtQ);
if ((rc == STATUS_SUCCESS) && (pctxt->pdataCallBack != NULL))
{
rc = DupObjData(gpheapGlobal, pctxt->pdataCallBack, &pctxt->Result);
}
if (pctxt->dwfCtxt & CTXTF_NEED_CALLBACK)
{
AsyncCallBack(pctxt, rc); 断点2:ACPI!RunContext+0x197
VOID
EXPORT
ACPIGetWorkerForInteger(
IN PNSOBJ AcpiObject,
IN NTSTATUS Status,
IN POBJDATA Result,
IN PVOID Context
)
{
status = ACPIGetConvertToDevicePresence(
request->DeviceExtension,
Status,
Result,
request->Flags,
request->Buffer,
request->BufferSize
); ACPI!ACPIGetWorkerForInteger+0x70
NTSTATUS
ACPIBuildProcessGenericList(
IN PLIST_ENTRY ListEntry,
IN PACPI_BUILD_FUNCTION *DispatchTable
)
{
//
// Call the function
//
status = (buildFunction)( buildRequest );ACPI!ACPIBuildProcessGenericList+0x4d
....
//
// If we have completed the request, then we should look at the
// at the next request, otherwise, we need to look at the current
// request again
if ( workDone == WORK_DONE_COMPLETE || workDone == WORK_DONE_FAILURE) {
currentEntry = tempEntry;
} ACPI!ACPIBuildProcessGenericList+0x50
VOID LOCAL DispatchCtxtQueue(PCTXTQ pctxtq)
{
while ((plist = ListRemoveHead(&pctxtq->plistCtxtQ)) != NULL)
{
pctxt = CONTAINING_RECORD(plist, CTXT, listQueue);
ASSERT(pctxt->pplistCtxtQueue == &pctxtq->plistCtxtQ);
pctxt->pplistCtxtQueue = NULL;
pctxt->dwfCtxt &= ~CTXTF_IN_READYQ;
RunContext(pctxt); ACPI!DispatchCtxtQueue+0xaf
}
VOID
ACPIWorker(
IN PVOID StartContext
)
{
(WorkItem->WorkerRoutine)(WorkItem->Parameter); ACPI!ACPIWorker+0xbd
NTSTATUS
ACPIBuildProcessRunMethodPhaseRecurse(
IN PACPI_BUILD_REQUEST BuildRequest
)
{
//
// Make a request to run the control method on this child
//
status = ACPIBuildRunMethodRequest(
childExtension,
NULL,
NULL,
BuildRequest->RunRequest.ControlMethodName,
BuildRequest->RunRequest.Flags,
FALSE
); ACPI!ACPIBuildProcessRunMethodPhaseRecurse+0x58
bp ACPI!ACPIBuildProcessRunMethodPhaseCheckSta
bp ACPI!RunContext
bp ACPI!ACPIGetConvertToDevicePresence
bp ACPI!Return
bp ACPI!ParseCall
bp ACPI!ACPIBuildRunMethodRequest