283{
285 UINT8 *AmlAddress = InAmlAddress;
286 char *NameString =
NULL;
290
291
293
294
298 {
299
300
302 if (!NameString)
303 {
305 }
306 else
307 {
309 }
310 }
311 else
312 {
313
314
315
316
317 switch (*AmlAddress)
318 {
320
322 AmlAddress));
323
324
325
326
327
328 AmlAddress++;
331 break;
332
334
335
336
337 do
338 {
340 AmlAddress));
341
342 AmlAddress++;
343 PrefixCount++;
344
346
348 break;
349
350 default:
351
352
353
354 break;
355 }
356
357
358
359 switch (*AmlAddress)
360 {
362
364 AmlAddress));
365
366 AmlAddress++;
368 if (!NameString)
369 {
371 break;
372 }
373
374
375
377
380 {
382 }
383 break;
384
386
388 AmlAddress));
389
390
391
392 AmlAddress++;
393 NumSegments = *AmlAddress;
394
396 PrefixCount, NumSegments);
397 if (!NameString)
398 {
400 break;
401 }
402
403
404
405 AmlAddress++;
407
408 while (NumSegments &&
411 {
412 NumSegments--;
413 }
414
415 break;
416
417 case 0:
418
419
420
422 {
424 "NameSeg is \"\\\" followed by NULL\n"));
425 }
426
427
428
429 AmlAddress++;
431 if (!NameString)
432 {
434 break;
435 }
436
437 break;
438
439 default:
440
441
442
444 if (!NameString)
445 {
447 break;
448 }
449
451 break;
452 }
453 }
454
456 {
457
458
460 "Malformed Name at %p", NameString));
462 }
463
465 {
466 if (NameString)
467 {
469 }
471 }
472
473 *OutNameString = NameString;
474 *OutNameLength = (
UINT32) (AmlAddress - InAmlAddress);
475
477}
#define ACPI_DEBUG_PRINT(pl)
#define ACPI_FUNCTION_TRACE_PTR(a, b)
#define return_ACPI_STATUS(s)
#define ACPI_TYPE_LOCAL_BANK_FIELD
#define ACPI_TYPE_LOCAL_REGION_FIELD
#define ACPI_TYPE_LOCAL_INDEX_FIELD
BOOL HasPrefix(_In_ PWSTR pszString, _In_ PWSTR pszPrefix, _Out_opt_ PWSTR *pszSuffix)
static ACPI_STATUS AcpiExNameSegment(UINT8 **InAmlAddress, char *NameString)
static char * AcpiExAllocateNameString(UINT32 PrefixCount, UINT32 NumNameSegs)