+ PCD_TOKEN_NUMBER ExTokenNumber;\r
+ \r
+ //\r
+ // Scan the local token space\r
+ //\r
+ if (Guid == NULL) {\r
+ *TokenNumber++;\r
+ if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {\r
+ return EFI_SUCCESS;\r
+ } else {\r
+ if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER &&\r
+ *TokenNumber < PEI_LOCAL_TOKEN_NUMBER) {\r
+ //\r
+ // The first Non-Ex type Token Number for DXE PCD \r
+ // database is PEI_LOCAL_TOKEN_NUMBER\r
+ //\r
+ *TokenNumber = PEI_LOCAL_TOKEN_NUMBER;\r
+ return EFI_SUCCESS;\r
+ } else if (*TokenNumber >= DXE_NEX_TOKEN_NUMBER + PEI_LOCAL_TOKEN_NUMBER) {\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
+ return EFI_SUCCESS;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (PEI_EXMAP_TABLE_EMPTY && PEI_EXMAP_TABLE_EMPTY) {\r
+ *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+ return EFI_NOT_FOUND;\r
+ }\r
+\r
+ ExTokenNumber = *TokenNumber;\r
+ if (!PEI_EXMAP_TABLE_EMPTY) {\r
+ ExTokenNumber = ExGetNextTokeNumber (\r
+ Guid,\r
+ ExTokenNumber,\r
+ mPcdDatabase->PeiDb.Init.GuidTable,\r
+ sizeof(mPcdDatabase->PeiDb.Init.GuidTable),\r
+ mPcdDatabase->PeiDb.Init.ExMapTable,\r
+ sizeof(mPcdDatabase->PeiDb.Init.ExMapTable)\r
+ );\r
+ }\r
+\r
+ if (!DXE_EXMAP_TABLE_EMPTY) {\r
+ ExTokenNumber = ExGetNextTokeNumber (\r
+ Guid,\r
+ ExTokenNumber,\r
+ mPcdDatabase->PeiDb.Init.GuidTable,\r
+ sizeof(mPcdDatabase->PeiDb.Init.GuidTable),\r
+ mPcdDatabase->PeiDb.Init.ExMapTable,\r
+ sizeof(mPcdDatabase->PeiDb.Init.ExMapTable)\r
+ );\r
+ }\r
+\r
+ *TokenNumber = ExTokenNumber;\r
+\r
+ return EFI_SUCCESS;\r