您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GetFirstNode函数代码示例

51自学网 2021-06-01 21:08:06
  C++
这篇教程C++ GetFirstNode函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GetFirstNode函数的典型用法代码示例。如果您正苦于以下问题:C++ GetFirstNode函数的具体用法?C++ GetFirstNode怎么用?C++ GetFirstNode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GetFirstNode函数的26个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: UsbListAllUsbDevices

/***  List all available Usb devices and all their partitions.    @param[in|out]  DeviceList  The linked list contains all Usb devices.    @retval  EFI_SUCCESS	The function exited normally.  @retval  Other     	  An error occurred.***/EFI_STATUSUsbListAllUsbDevices (  IN OUT LIST_ENTRY        *DeviceList  ){  LIST_ENTRY              *DiskNode = NULL;  LIST_ENTRY              *PartitionNode = NULL;  DISK_ENTRY              *DiskEntry = NULL;  PARTITION_ENTRY         *PartitionEntry = NULL;  EFI_BLOCK_IO_PROTOCOL   *BlockIo = NULL;  DISK_INFO               *DiskInfo = NULL;  PARTITION_INFO          *PartitionInfo = NULL;    if (DeviceList == NULL) {    return EFI_INVALID_PARAMETER;  }    DiskNode = GetFirstNode (DeviceList);  while (!IsNull (DeviceList, DiskNode)) {    DiskEntry = (DISK_ENTRY*)DiskNode;    if (DiskEntry != NULL) {      DiskInfo = &(DiskEntry->DiskInfo);      BlockIo = DiskInfo->BlockIo;            Print (L"/n[%d] /n", DiskInfo->DiskIndex);      if (DiskInfo->MaxPartitions > 0) {        PartitionNode = GetFirstNode(&(DiskInfo->PartitionsList));        while (!IsNull (&(DiskInfo->PartitionsList), PartitionNode)) {          PartitionEntry = (PARTITION_ENTRY*)PartitionNode;          if (PartitionEntry != NULL) {            PartitionInfo = &(PartitionEntry->PartitionInfo);            Print (L"|____[Partition] %d, ", PartitionInfo->PartitionNumber);            Print (L"[Size] %ld, ", (PartitionInfo->EndLBA - PartitionInfo->StartLBA + 1));            Print (L"[StartLBA] %ld, [EndLBA] %ld/n", PartitionInfo->StartLBA, PartitionInfo->EndLBA);          }          PartitionNode = GetNextNode (&(DiskInfo->PartitionsList), PartitionNode);        } //end while()       }    }    DiskNode = GetNextNode (DeviceList, DiskNode);  } //end while()  Print (L"Press ESC to return./n");    return EFI_SUCCESS;}
开发者ID:nvhien1992,项目名称:AppsTianocore,代码行数:53,


示例2: TerminalConInRegisterKeyNotify

/**  Register a notification function for a particular keystroke for the input device.  @param  This                     Protocol instance pointer.  @param  KeyData                  A pointer to a buffer that is filled in with the                                   keystroke information data for the key that was                                   pressed.  @param  KeyNotificationFunction  Points to the function to be called when the key                                   sequence is typed specified by KeyData.  @param  NotifyHandle             Points to the unique handle assigned to the                                   registered notification.  @retval EFI_SUCCESS              The notification function was registered                                   successfully.  @retval EFI_OUT_OF_RESOURCES     Unable to allocate resources for necessary data                                   structures.  @retval EFI_INVALID_PARAMETER    KeyData or NotifyHandle is NULL.**/EFI_STATUSEFIAPITerminalConInRegisterKeyNotify (  IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,  IN EFI_KEY_DATA                       *KeyData,  IN EFI_KEY_NOTIFY_FUNCTION            KeyNotificationFunction,  OUT VOID                              **NotifyHandle  ){  TERMINAL_DEV                    *TerminalDevice;  TERMINAL_CONSOLE_IN_EX_NOTIFY   *NewNotify;  LIST_ENTRY                      *Link;  LIST_ENTRY                      *NotifyList;  TERMINAL_CONSOLE_IN_EX_NOTIFY   *CurrentNotify;  if (KeyData == NULL || NotifyHandle == NULL || KeyNotificationFunction == NULL) {    return EFI_INVALID_PARAMETER;  }  TerminalDevice = TERMINAL_CON_IN_EX_DEV_FROM_THIS (This);  //  // Return EFI_SUCCESS if the (KeyData, NotificationFunction) is already registered.  //  NotifyList = &TerminalDevice->NotifyList;  for (Link = GetFirstNode (NotifyList); !IsNull (NotifyList,Link); Link = GetNextNode (NotifyList,Link)) {    CurrentNotify = CR (                      Link,                      TERMINAL_CONSOLE_IN_EX_NOTIFY,                      NotifyEntry,                      TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE                      );    if (IsKeyRegistered (&CurrentNotify->KeyData, KeyData)) {      if (CurrentNotify->KeyNotificationFn == KeyNotificationFunction) {        *NotifyHandle = CurrentNotify;        return EFI_SUCCESS;      }    }  }  //  // Allocate resource to save the notification function  //  NewNotify = (TERMINAL_CONSOLE_IN_EX_NOTIFY *) AllocateZeroPool (sizeof (TERMINAL_CONSOLE_IN_EX_NOTIFY));  if (NewNotify == NULL) {    return EFI_OUT_OF_RESOURCES;  }  NewNotify->Signature         = TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE;  NewNotify->KeyNotificationFn = KeyNotificationFunction;  CopyMem (&NewNotify->KeyData, KeyData, sizeof (EFI_KEY_DATA));  InsertTailList (&TerminalDevice->NotifyList, &NewNotify->NotifyEntry);  *NotifyHandle                = NewNotify;  return EFI_SUCCESS;}
开发者ID:B-Rich,项目名称:edk2,代码行数:76,


示例3: BootManagerCallback

/**  This call back function is registered with Boot Manager formset.  When user selects a boot option, this call back function will  be triggered. The boot option is saved for later processing.  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.  @param Action          Specifies the type of action taken by the browser.  @param QuestionId      A unique value which is sent to the original exporting driver                         so that it can identify the type of data to expect.  @param Type            The type of value for the question.  @param Value           A pointer to the data being sent to the original exporting driver.  @param ActionRequest   On return, points to the action requested by the callback function.  @retval  EFI_SUCCESS           The callback successfully handled the action.  @retval  EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.**/EFI_STATUSEFIAPIBootManagerCallback (    IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,    IN  EFI_BROWSER_ACTION                     Action,    IN  EFI_QUESTION_ID                        QuestionId,    IN  UINT8                                  Type,    IN  EFI_IFR_TYPE_VALUE                     *Value,    OUT EFI_BROWSER_ACTION_REQUEST             *ActionRequest){    BDS_COMMON_OPTION       *Option;    LIST_ENTRY              *Link;    UINT16                  KeyCount;    if (Action == EFI_BROWSER_ACTION_CHANGED) {        if ((Value == NULL) || (ActionRequest == NULL)) {            return EFI_INVALID_PARAMETER;        }        //        // Initialize the key count        //        KeyCount = 0;        for (Link = GetFirstNode (&mBootOptionsList); !IsNull (&mBootOptionsList, Link); Link = GetNextNode (&mBootOptionsList, Link)) {            Option = CR (Link, BDS_COMMON_OPTION, Link, BDS_LOAD_OPTION_SIGNATURE);            KeyCount++;            gOption = Option;            //            // Is this device the one chosen?            //            if (KeyCount == QuestionId) {                //                // Assigning the returned Key to a global allows the original routine to know what was chosen                //                mKeyInput = QuestionId;                //                // Request to exit SendForm(), so that we could boot the selected option                //                *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;                break;            }        }        return EFI_SUCCESS;    }    //    // All other action return unsupported.    //    return EFI_UNSUPPORTED;}
开发者ID:EvanLloyd,项目名称:tianocore,代码行数:75,


示例4: AdjustOptionOrder

/**  Adjust option order base on the question value.  @param  Question           Pointer to current question.  @param  PopUpMenuLines     The line number of the pop up menu.  @retval EFI_SUCCESS       If Option input is processed successfully  @retval EFI_DEVICE_ERROR  If operation fails**/EFI_STATUSAdjustOptionOrder (  IN  FORM_DISPLAY_ENGINE_STATEMENT  *Question,  OUT UINTN                          *PopUpMenuLines  ){  UINTN                   Index;  EFI_IFR_ORDERED_LIST    *OrderList;  UINT8                   *ValueArray;  UINT8                   ValueType;  LIST_ENTRY              *Link;  DISPLAY_QUESTION_OPTION *OneOfOption;  EFI_HII_VALUE           *HiiValueArray;  Link        = GetFirstNode (&Question->OptionListHead);  OneOfOption = DISPLAY_QUESTION_OPTION_FROM_LINK (Link);  ValueArray  = Question->CurrentValue.Buffer;  ValueType   =  OneOfOption->OptionOpCode->Type;  OrderList   = (EFI_IFR_ORDERED_LIST *) Question->OpCode;  for (Index = 0; Index < OrderList->MaxContainers; Index++) {    if (GetArrayData (ValueArray, ValueType, Index) == 0) {      break;    }  }    *PopUpMenuLines = Index;    //  // Prepare HiiValue array  //    HiiValueArray = AllocateZeroPool (*PopUpMenuLines * sizeof (EFI_HII_VALUE));  ASSERT (HiiValueArray != NULL);  for (Index = 0; Index < *PopUpMenuLines; Index++) {    HiiValueArray[Index].Type = ValueType;    HiiValueArray[Index].Value.u64 = GetArrayData (ValueArray, ValueType, Index);  }    for (Index = 0; Index < *PopUpMenuLines; Index++) {    OneOfOption = ValueToOption (Question, &HiiValueArray[*PopUpMenuLines - Index - 1]);    if (OneOfOption == NULL) {      return EFI_NOT_FOUND;    }      RemoveEntryList (&OneOfOption->Link);      //    // Insert to head.    //    InsertHeadList (&Question->OptionListHead, &OneOfOption->Link);  }    FreePool (HiiValueArray);  return EFI_SUCCESS;}
开发者ID:ChenFanFnst,项目名称:edk2,代码行数:67,


示例5: GetOneOfOptionMapEntry

/**  Get the ONE_OF_OPTION_MAP_ENTRY for a QuestionId that invokes the   EFI_FORM_CALLBACK_PROTOCOL.Callback. The information is needed as  the callback mechanism for EFI_IFR_ONE_OF_OPTION is changed from   EFI_IFR_ONE_OF_OPTION in Framework IFR. Check EFI_IFR_GUID_OPTIONKEY  for detailed information.  @param ThunkContext   The Thunk Context.  @param QuestionId     The Question Id.  @param Type           The Question Type.  @param Value          The One Of Option's value.  @return The ONE_OF_OPTION_MAP_ENTRY found.  @retval NULL If no entry is found.**/ONE_OF_OPTION_MAP_ENTRY *GetOneOfOptionMapEntry (  IN  HII_THUNK_CONTEXT              *ThunkContext,  IN  EFI_QUESTION_ID                QuestionId,  IN  UINT8                          Type,  IN  EFI_IFR_TYPE_VALUE             *Value  ){  LIST_ENTRY              *Link;  LIST_ENTRY              *Link2;  ONE_OF_OPTION_MAP_ENTRY *OneOfOptionMapEntry;  ONE_OF_OPTION_MAP       *OneOfOptionMap;  FORM_BROWSER_FORMSET    *FormSet;  FormSet = ThunkContext->FormSet;  Link = GetFirstNode (&FormSet->OneOfOptionMapListHead);  while (!IsNull (&FormSet->OneOfOptionMapListHead, Link)) {    OneOfOptionMap = ONE_OF_OPTION_MAP_FROM_LINK(Link);    if (OneOfOptionMap->QuestionId == QuestionId) {      ASSERT (OneOfOptionMap->ValueType == Type);      Link2 = GetFirstNode (&OneOfOptionMap->OneOfOptionMapEntryListHead);      while (!IsNull (&OneOfOptionMap->OneOfOptionMapEntryListHead, Link2)) {        OneOfOptionMapEntry = ONE_OF_OPTION_MAP_ENTRY_FROM_LINK (Link2);        if (CompareMem (Value, &OneOfOptionMapEntry->Value, sizeof (EFI_IFR_TYPE_VALUE)) == 0) {          return OneOfOptionMapEntry;        }        Link2 = GetNextNode (&OneOfOptionMap->OneOfOptionMapEntryListHead, Link2);      }    }    Link = GetNextNode (&FormSet->OneOfOptionMapListHead, Link);  }  return NULL;}
开发者ID:AshleyDeSimone,项目名称:edk2,代码行数:57,


示例6: FreeFileRegions

// Free the resources in the file's Region list.STATICVOIDFreeFileRegions (  IN  BOOTMON_FS_FILE *File  ){  LIST_ENTRY              *RegionToFlushLink;  BOOTMON_FS_FILE_REGION  *Region;  RegionToFlushLink = GetFirstNode (&File->RegionToFlushLink);  while (!IsNull (&File->RegionToFlushLink, RegionToFlushLink)) {    // Repeatedly remove the first node from the list and free its resources.    Region = (BOOTMON_FS_FILE_REGION *) RegionToFlushLink;    RemoveEntryList (RegionToFlushLink);    FreePool (Region->Buffer);    FreePool (Region);    RegionToFlushLink = GetFirstNode (&File->RegionToFlushLink);  }}
开发者ID:Michell-Lee,项目名称:edk2,代码行数:21,


示例7: vtGetContent

//// stoplights and stopsigns//void vtRoadMap3d::GenerateSigns(vtLodGrid *pLodGrid){	if (!pLodGrid)		return;	vtContentManager3d &con = vtGetContent();	osg::Node *stopsign = con.CreateNodeFromItemname("American Stopsign");	osg::Node *stoplight = con.CreateNodeFromItemname("Stoplight (right)");	if (!stopsign || !stoplight)	{		VTLOG("Couldn't find stopsign and stoplight./n");		return;	}	for (NodeGeom *pN = GetFirstNode(); pN; pN = pN->GetNext())	{		for (int r = 0; r < pN->NumLinks(); r++)		{			osg::Node *shape = NULL;			if (pN->GetIntersectType(r) == IT_STOPSIGN && stopsign)			{				shape = (osg::Node *) stopsign->clone(osg::CopyOp::SHALLOW_COPY);			}			if (pN->GetIntersectType(r) == IT_LIGHT && stoplight)			{				shape = (osg::Node *) stoplight->clone(osg::CopyOp::SHALLOW_COPY);			}			if (!shape) continue;			vtTransform *trans = new vtTransform;			trans->addChild(shape);			LinkGeom *link = pN->GetLink(r);			FPoint3 unit = pN->GetUnitLinkVector(r);			FPoint3 perp(unit.z, unit.y, -unit.x);			FPoint3 offset;			// Turn the sign (yaw) to face the oncoming traffic			trans->RotateLocal(FPoint3(0,1,0), pN->GetLinkAngle(r) + PID2f);			if (pN->GetIntersectType(r) == IT_STOPSIGN)			{				offset = pN->m_p3 + (unit * 6.0f) + (perp * (link->m_fRightWidth));			}			if (pN->GetIntersectType(r) == IT_LIGHT)			{				offset = pN->m_p3 - (unit * 6.0f) + (perp * (link->m_fRightWidth));			}			trans->Translate(offset);			pLodGrid->AddToGrid(trans);		}	}}
开发者ID:kamalsirsa,项目名称:vtp,代码行数:56,


示例8: BmGetBootDescription

/**  Return the boot description for the controller.  @param Handle                Controller handle.  @return  The description string.**/CHAR16 *BmGetBootDescription (  IN EFI_HANDLE                  Handle  ){  LIST_ENTRY                     *Link;  BM_BOOT_DESCRIPTION_ENTRY      *Entry;  CHAR16                         *Description;  CHAR16                         *DefaultDescription;  CHAR16                         *Temp;  UINTN                          Index;  //  // Firstly get the default boot description  //  DefaultDescription = NULL;  for (Index = 0; Index < sizeof (mBmBootDescriptionHandlers) / sizeof (mBmBootDescriptionHandlers[0]); Index++) {    DefaultDescription = mBmBootDescriptionHandlers[Index] (Handle);    if (DefaultDescription != NULL) {      //      // Avoid description confusion between UEFI & Legacy boot option by adding "UEFI " prefix      // ONLY for core provided boot description handler.      //      Temp = AllocatePool (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix));      ASSERT (Temp != NULL);      StrCpyS (Temp, (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)) / sizeof (CHAR16), mBmUefiPrefix);      StrCatS (Temp, (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)) / sizeof (CHAR16), DefaultDescription);      FreePool (DefaultDescription);      DefaultDescription = Temp;      break;    }  }  ASSERT (DefaultDescription != NULL);  //  // Secondly query platform for the better boot description  //  for ( Link = GetFirstNode (&mPlatformBootDescriptionHandlers)      ; !IsNull (&mPlatformBootDescriptionHandlers, Link)      ; Link = GetNextNode (&mPlatformBootDescriptionHandlers, Link)      ) {    Entry = CR (Link, BM_BOOT_DESCRIPTION_ENTRY, Link, BM_BOOT_DESCRIPTION_ENTRY_SIGNATURE);    Description = Entry->Handler (Handle, DefaultDescription);    if (Description != NULL) {      FreePool (DefaultDescription);      return Description;    }  }  return DefaultDescription;}
开发者ID:M1cha,项目名称:edk2,代码行数:58,


示例9: USBKeyboardUnregisterKeyNotify

/**  Remove a registered notification function from a particular keystroke.  @param  This                      Protocol instance pointer.  @param  NotificationHandle        The handle of the notification function being unregistered.  @retval EFI_SUCCESS              The notification function was unregistered successfully.  @retval EFI_INVALID_PARAMETER    The NotificationHandle is invalid**/EFI_STATUSEFIAPIUSBKeyboardUnregisterKeyNotify (  IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,  IN EFI_HANDLE                         NotificationHandle  ){  USB_KB_DEV                        *UsbKeyboardDevice;  KEYBOARD_CONSOLE_IN_EX_NOTIFY     *CurrentNotify;  LIST_ENTRY                        *Link;  LIST_ENTRY                        *NotifyList;  if (NotificationHandle == NULL) {    return EFI_INVALID_PARAMETER;  }  if (((KEYBOARD_CONSOLE_IN_EX_NOTIFY *) NotificationHandle)->Signature != USB_KB_CONSOLE_IN_EX_NOTIFY_SIGNATURE) {    return EFI_INVALID_PARAMETER;  }  UsbKeyboardDevice = TEXT_INPUT_EX_USB_KB_DEV_FROM_THIS (This);  //  // Traverse notify list of USB keyboard and remove the entry of NotificationHandle.  //  NotifyList = &UsbKeyboardDevice->NotifyList;  for (Link = GetFirstNode (NotifyList);       !IsNull (NotifyList, Link);       Link = GetNextNode (NotifyList, Link)) {    CurrentNotify = CR (                      Link,                      KEYBOARD_CONSOLE_IN_EX_NOTIFY,                      NotifyEntry,                      USB_KB_CONSOLE_IN_EX_NOTIFY_SIGNATURE                      );    if (CurrentNotify->NotifyHandle == NotificationHandle) {      //      // Remove the notification function from NotifyList and free resources      //      RemoveEntryList (&CurrentNotify->NotifyEntry);      FreePool (CurrentNotify);      return EFI_SUCCESS;    }  }  //  // Cannot find the matching entry in database.  //  return EFI_INVALID_PARAMETER;}
开发者ID:AshleyDeSimone,项目名称:edk2,代码行数:61,


示例10: ResetDevice

/**  Resets an SD card that is connected to the SD controller.  The ResetDevice() function resets the SD card specified by Slot.  If this SD controller does not support a device reset operation, EFI_UNSUPPORTED is  returned.  If Slot is not in a valid slot number for this SD controller, EFI_INVALID_PARAMETER  is returned.  If the device reset operation is completed, EFI_SUCCESS is returned.  @param[in]  This              A pointer to the EFI_SD_MMC_PASS_THRU_PROTOCOL instance.  @param[in]  Slot              Specifies the slot number of the SD card to be reset.  @retval EFI_SUCCESS           The SD card specified by Slot was reset.  @retval EFI_UNSUPPORTED       The SD controller does not support a device reset operation.  @retval EFI_INVALID_PARAMETER Slot number is invalid.  @retval EFI_NO_MEDIA          SD Device not present in the Slot.  @retval EFI_DEVICE_ERROR      The reset command failed due to a device error**/EFI_STATUSEFIAPISdMmcPassThruResetDevice (  IN EFI_SD_MMC_PASS_THRU_PROTOCOL           *This,  IN UINT8                                   Slot  ){  SD_MMC_HC_PRIVATE_DATA          *Private;  LIST_ENTRY                      *Link;  LIST_ENTRY                      *NextLink;  SD_MMC_HC_TRB                   *Trb;  EFI_TPL                         OldTpl;  if (This == NULL) {    return EFI_INVALID_PARAMETER;  }  Private = SD_MMC_HC_PRIVATE_FROM_THIS (This);  if (!Private->Slot[Slot].Enable) {    return EFI_INVALID_PARAMETER;  }  if (!Private->Slot[Slot].MediaPresent) {    return EFI_NO_MEDIA;  }  if (!Private->Slot[Slot].Initialized) {    return EFI_DEVICE_ERROR;  }  //  // Free all async I/O requests in the queue  //  OldTpl = gBS->RaiseTPL (TPL_NOTIFY);  for (Link = GetFirstNode (&Private->Queue);       !IsNull (&Private->Queue, Link);       Link = NextLink) {    NextLink = GetNextNode (&Private->Queue, Link);    RemoveEntryList (Link);    Trb = SD_MMC_HC_TRB_FROM_THIS (Link);    Trb->Packet->TransactionStatus = EFI_ABORTED;    gBS->SignalEvent (Trb->Event);    SdMmcFreeTrb (Trb);  }  gBS->RestoreTPL (OldTpl);  return EFI_SUCCESS;}
开发者ID:baranee,项目名称:edk2,代码行数:73,


示例11: GetFirstNode

/** *  Gets the number of a nodes on a given node. * *  @param  refNode     Node to check level. *  @return             The previous node or NULL if there's no previous. */size_t VDFTree::CountBranchNodes(VDFNode *refNode){    VDFNode *firstNode;    size_t counter;    firstNode = GetFirstNode(refNode);    counter = 0;    while(firstNode) {        counter++;        firstNode = firstNode->nextNode;    }    return counter;}
开发者ID:Yepoleb,项目名称:vdfparser,代码行数:21,


示例12: VariableClassAddressChangeEvent

/**  Notification function of EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE.  This is a notification function registered on EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE event.  It convers pointer to new virtual address.  @param  Event        Event whose notification function is being invoked.  @param  Context      Pointer to the notification function's context.**/VOIDEFIAPIVariableClassAddressChangeEvent (  IN EFI_EVENT                            Event,  IN VOID                                 *Context  ){  LIST_ENTRY     *Link;  VARIABLE_ENTRY *Entry;  EFI_STATUS     Status;  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetBlockSize);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetPhysicalAddress);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetAttributes);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->SetAttributes);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->Read);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->Write);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->EraseBlocks);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->PlatformLangCodes);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->LangCodes);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->PlatformLang);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->VariableGlobal.NonVolatileVariableBase);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->VariableGlobal.VolatileVariableBase);  EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal);  EfiConvertPointer (0x0, (VOID **) &mHashCtx);  EfiConvertPointer (0x0, (VOID **) &mSerializationRuntimeBuffer);  EfiConvertPointer (0x0, (VOID **) &mNvVariableCache);  EfiConvertPointer (0x0, (VOID **) &mPubKeyStore);  EfiConvertPointer (0x0, (VOID **) &mCertDbStore);  //  // in the list of locked variables, convert the name pointers first  //  for ( Link = GetFirstNode (&mLockedVariableList)      ; !IsNull (&mLockedVariableList, Link)      ; Link = GetNextNode (&mLockedVariableList, Link)      ) {    Entry = BASE_CR (Link, VARIABLE_ENTRY, Link);    Status = EfiConvertPointer (0x0, (VOID **) &Entry->Name);    ASSERT_EFI_ERROR (Status);  }  //  // second, convert the list itself using UefiRuntimeLib  //  Status = EfiConvertList (0x0, &mLockedVariableList);  ASSERT_EFI_ERROR (Status);}
开发者ID:jeppeter,项目名称:vbox,代码行数:58,


示例13: KeyNotifyProcessHandler

/**  Process key notify.  @param  Event                 Indicates the event that invoke this function.  @param  Context               Indicates the calling context.**/VOIDEFIAPIKeyNotifyProcessHandler (  IN  EFI_EVENT                 Event,  IN  VOID                      *Context  ){  EFI_STATUS                            Status;  VIRTUAL_KEYBOARD_DEV                  *VirtualKeyboardPrivate;  EFI_KEY_DATA                          KeyData;  LIST_ENTRY                            *Link;  LIST_ENTRY                            *NotifyList;  VIRTUAL_KEYBOARD_CONSOLE_IN_EX_NOTIFY *CurrentNotify;  EFI_TPL                               OldTpl;  VirtualKeyboardPrivate = (VIRTUAL_KEYBOARD_DEV *) Context;  //  // Invoke notification functions.  //  NotifyList = &VirtualKeyboardPrivate->NotifyList;  while (TRUE) {    //    // Enter critical section    //    OldTpl = gBS->RaiseTPL (TPL_NOTIFY);    Status = Dequeue (&VirtualKeyboardPrivate->QueueForNotify, &KeyData);    //    // Leave critical section    //    gBS->RestoreTPL (OldTpl);    if (EFI_ERROR (Status)) {      break;    }    for (Link = GetFirstNode (NotifyList);         !IsNull (NotifyList, Link);         Link = GetNextNode (NotifyList, Link)) {      CurrentNotify = CR (Link,                        VIRTUAL_KEYBOARD_CONSOLE_IN_EX_NOTIFY,                        NotifyEntry,                        VIRTUAL_KEYBOARD_CONSOLE_IN_EX_NOTIFY_SIGNATURE                        );      if (IsKeyRegistered (&CurrentNotify->KeyData, &KeyData)) {        CurrentNotify->KeyNotificationFn (&KeyData);      }    }  }}
开发者ID:lersek,项目名称:edk2,代码行数:54,


示例14: SmiHandlerRegister

/**  Search for Framework SMI handler information according to specific PI SMM dispatch handle.  @param[in] DispatchHandle  The unique handle assigned by SmiHandlerRegister().    @return  Pointer to CALLBACK_INFO. If NULL, no callback info record is found.**/CALLBACK_INFO *GetCallbackInfo (  IN EFI_HANDLE  DispatchHandle  ){  LIST_ENTRY  *Node;  Node = GetFirstNode (&mCallbackInfoListHead);  while (!IsNull (&mCallbackInfoListHead, Node)) {    if (((CALLBACK_INFO *)Node)->DispatchHandle == DispatchHandle) {      return (CALLBACK_INFO *)Node;    }    Node = GetNextNode (&mCallbackInfoListHead, Node);  }  return NULL;}
开发者ID:hsienchieh,项目名称:uefilab,代码行数:23,


示例15: UsbGetAllPartitions

/***  Get all partitions of all USB devices in linked list.  @param[in|out]  DeviceList  - Linked list of USB devices.  @param[in]      MaxDevices  - Number of USB devices in linked list.    @retval  EFI_SUCCESS	The function exited normally.  @retval  Other     	  An error occurred.***/EFI_STATUSUsbGetAllPartitions (     IN OUT LIST_ENTRY   *DeviceList,  IN UINTN            MaxDevices  ){  EFI_STATUS      Status;    LIST_ENTRY      ChildHandleList[MaxDevices];  LIST_ENTRY      *Node = NULL;  DISK_ENTRY      *DiskEntry = NULL;  UINTN           MaxPartitions, Index;    if (IsListEmpty (DeviceList)) {    return EFI_INVALID_PARAMETER;  }    Index = 0;  Node = GetFirstNode (DeviceList);  while (!IsNull (DeviceList, Node)) {     DiskEntry = (DISK_ENTRY*)Node;    MaxPartitions = 0;    Status = GetChildHandles (                    DiskEntry->DiskInfo.DiskHandle,                     &gEfiBlockIoProtocolGuid,                     &gEfiDiskIoProtocolGuid,                     &ChildHandleList[Index]                    );    if (Status == EFI_SUCCESS) {        Status = CheckGptMbrPartitions (                    &ChildHandleList[Index],                     DiskEntry->DiskInfo.BlockIo->Media->MediaId,                     &(DiskEntry->DiskInfo.PartitionsList),                    &MaxPartitions                    );      if (Status == EFI_SUCCESS) {        DiskEntry->DiskInfo.MaxPartitions = MaxPartitions;        DBG ("MaxPartitions: %d/n", MaxPartitions);      }    }    Index++;    Node = GetNextNode (DeviceList, Node);  }  DBG ("OK/n");    return EFI_SUCCESS;}
开发者ID:nvhien1992,项目名称:AppsTianocore,代码行数:56,


示例16: I2cHostRequestComplete

/**  Complete the current request  This routine is called at TPL_I2C_SYNC.  @param[in] I2cHostContext  Address of an I2C_HOST_CONTEXT structure.  @param[in] Status          Status of the I2C operation.  @return This routine returns the input status value.**/EFI_STATUSI2cHostRequestComplete (  I2C_HOST_CONTEXT *I2cHostContext,  EFI_STATUS       Status  ){  I2C_REQUEST *I2cRequest;  LIST_ENTRY  *EntryHeader;  LIST_ENTRY  *Entry;  //  // Remove the current I2C request from the list  //  EntryHeader = &I2cHostContext->RequestList;  Entry = GetFirstNode (EntryHeader);  I2cRequest = I2C_REQUEST_FROM_ENTRY (Entry);  //  // Save the status for QueueRequest  //  if ( NULL != I2cRequest->Status ) {    *I2cRequest->Status = Status;  }  //  //  Notify the user of the I2C request completion  //  if ( NULL != I2cRequest->Event ) {    gBS->SignalEvent (I2cRequest->Event);  }  //  // Done with this request, remove the current request from list  //  RemoveEntryList (&I2cRequest->Link);  FreePool (I2cRequest->RequestPacket);  FreePool (I2cRequest);  //  // If there is more I2C request, start next one  //  if(!IsListEmpty (EntryHeader)) {    I2cHostRequestEnable (I2cHostContext);  }    return Status;}
开发者ID:JohnTroony,项目名称:vector-edk,代码行数:58,


示例17: InternalUpdateAliasOnList

/**  Update the value of a given alias on the list.  If the alias is not there then add it.  @param[in] Alias               The alias to test for.  @param[in] CommandString       The updated command string.  @param[in, out] List           The list to search.  @retval EFI_SUCCESS           The operation was completed successfully.  @retval EFI_OUT_OF_RESOURCES  There was not enough free memory.**/EFI_STATUSEFIAPIInternalUpdateAliasOnList(  IN CONST CHAR16       *Alias,  IN CONST CHAR16       *CommandString,  IN OUT LIST_ENTRY     *List  ){  ALIAS_LIST *Node;  BOOLEAN    Found;  //  // assert for NULL parameter  //  ASSERT(Alias != NULL);  //  // check for the Alias  //  for ( Node = (ALIAS_LIST *)GetFirstNode(List), Found = FALSE      ; !IsNull(List, &Node->Link)      ; Node = (ALIAS_LIST *)GetNextNode(List, &Node->Link)     ){    ASSERT(Node->CommandString != NULL);    ASSERT(Node->Alias != NULL);    if (StrCmp(Node->Alias, Alias)==0) {      FreePool(Node->CommandString);      Node->CommandString = NULL;      Node->CommandString = StrnCatGrow(&Node->CommandString, NULL, CommandString, 0);      Found = TRUE;      break;    }  }  if (!Found) {    Node = AllocateZeroPool(sizeof(ALIAS_LIST));    if (Node == NULL) {      return (EFI_OUT_OF_RESOURCES);    }    ASSERT(Node->Alias == NULL);    Node->Alias         = StrnCatGrow(&Node->Alias, NULL, Alias, 0);    ASSERT(Node->CommandString == NULL);    Node->CommandString = StrnCatGrow(&Node->CommandString, NULL, CommandString, 0);    InsertTailList(List, &Node->Link);  }  return (EFI_SUCCESS);}
开发者ID:JohnTroony,项目名称:vector-edk,代码行数:56,


示例18: CopyListOfCommandNames

/**   function to add each command name from the linked list to the string list.   the resultant list is a double NULL terminated list of NULL terminated strings.   @param[in,out] DestList    double pointer to the list. may be NULL.   @param[in,out] DestSize    pointer to the size of list. may be 0, if DestList is NULL.   @param[in]     SourceList  the double linked list of commands.   @retval EFI_SUCCESS        the operation was successful.**/EFI_STATUSCopyListOfCommandNames(  IN OUT   CHAR16       **DestList,  IN OUT   UINTN        *DestSize,  IN CONST COMMAND_LIST *SourceList  ){  CONST COMMAND_LIST  *Node;  for ( Node = (COMMAND_LIST*)GetFirstNode(&SourceList->Link)      ; SourceList != NULL && !IsListEmpty(&SourceList->Link) && !IsNull(&SourceList->Link, &Node->Link)      ; Node = (COMMAND_LIST*)GetNextNode(&SourceList->Link, &Node->Link)    ) {    LexicalInsertIntoList(DestList, DestSize, Node->CommandString);  }  return (EFI_SUCCESS);}
开发者ID:shijunjing,项目名称:edk2,代码行数:28,


示例19: EfiKeyFiFoInsertOneKey

/**  Insert one pre-fetched key into the FIFO buffer.  @param  TerminalDevice       Terminal driver private structure.  @param  Key                  The key will be input.  @retval TRUE                 If insert successfully.  @retval FLASE                If FIFO buffer is full before key insertion,                               and the key is lost.**/BOOLEANEfiKeyFiFoInsertOneKey (  TERMINAL_DEV                    *TerminalDevice,  EFI_INPUT_KEY                   *Key  ){  UINT8                           Tail;  LIST_ENTRY                      *Link;  LIST_ENTRY                      *NotifyList;  TERMINAL_CONSOLE_IN_EX_NOTIFY   *CurrentNotify;  EFI_KEY_DATA                    KeyData;  Tail = TerminalDevice->EfiKeyFiFo->Tail;  CopyMem (&KeyData.Key, Key, sizeof (EFI_INPUT_KEY));  KeyData.KeyState.KeyShiftState  = 0;  KeyData.KeyState.KeyToggleState = 0;  //  // Invoke notification functions if exist  //  NotifyList = &TerminalDevice->NotifyList;  for (Link = GetFirstNode (NotifyList); !IsNull (NotifyList,Link); Link = GetNextNode (NotifyList,Link)) {    CurrentNotify = CR (                      Link,                      TERMINAL_CONSOLE_IN_EX_NOTIFY,                      NotifyEntry,                      TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE                      );    if (IsKeyRegistered (&CurrentNotify->KeyData, &KeyData)) {      CurrentNotify->KeyNotificationFn (&KeyData);    }  }  if (IsEfiKeyFiFoFull (TerminalDevice)) {    //    // Efi Key FIFO is full    //    return FALSE;  }  CopyMem (&TerminalDevice->EfiKeyFiFo->Data[Tail], Key, sizeof (EFI_INPUT_KEY));  TerminalDevice->EfiKeyFiFo->Tail = (UINT8) ((Tail + 1) % (FIFO_MAX_NUMBER + 1));  return TRUE;}
开发者ID:B-Rich,项目名称:edk2,代码行数:57,


示例20: TxtInExCallback

/**  Callback function for SimpleTextInEx protocol install events  @param Event           the event that is signaled.  @param Context         not used here.**/VOIDEFIAPITxtInExCallback (  IN EFI_EVENT    Event,  IN VOID         *Context  ){  EFI_STATUS                         Status;  UINTN                              BufferSize;  EFI_HANDLE                         Handle;  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *TxtInEx;  LIST_ENTRY                         *Link;  while (TRUE) {    BufferSize = sizeof (EFI_HANDLE);    Status = gBS->LocateHandle (                    ByRegisterNotify,                    NULL,                    mTxtInExRegistration,                    &BufferSize,                    &Handle                    );    if (EFI_ERROR (Status)) {      //      // If no more notification events exist      //      return ;    }    Status = gBS->HandleProtocol (                    Handle,                    &gEfiSimpleTextInputExProtocolGuid,                    (VOID **) &TxtInEx                    );    ASSERT_EFI_ERROR (Status);    //    // Register the hot key notification for the existing items in the list    //    EfiAcquireLock (&mHotkeyLock);    for (Link = GetFirstNode (&mHotkeyList); !IsNull (&mHotkeyList, Link); Link = GetNextNode (&mHotkeyList, Link)) {      RegisterHotkeyNotify (TxtInEx, HOTKEY_FROM_LINK (Link));    }    EfiReleaseLock (&mHotkeyLock);  }}
开发者ID:01org,项目名称:Galileo-Runtime,代码行数:53,


示例21: ShellCommandFindMapItem

EFIAPIShellCommandFindMapItem (  IN CONST CHAR16 *MapKey  ){  SHELL_MAP_LIST *MapListItem;  for ( MapListItem = (SHELL_MAP_LIST *)GetFirstNode(&gShellMapList.Link)      ; !IsNull(&gShellMapList.Link, &MapListItem->Link)      ; MapListItem = (SHELL_MAP_LIST *)GetNextNode(&gShellMapList.Link, &MapListItem->Link)     ){    if (gUnicodeCollation->StriColl(gUnicodeCollation,MapListItem->MapName,(CHAR16*)MapKey) == 0) {      return (MapListItem);    }  }  return (NULL);}
开发者ID:B-Rich,项目名称:edk2,代码行数:17,


示例22: GetFirstStorageOfFormSet

/**  Get the first EFI_IFR_VARSTORE from the FormSet.       @param FormSet                  The Form Set.     @retval FORMSET_STORAGE *       Return the first EFI_IFR_VARSTORE.  @retval NULL                    If the Form Set does not have EFI_IFR_VARSTORE.**/FORMSET_STORAGE *GetFirstStorageOfFormSet (  IN CONST FORM_BROWSER_FORMSET * FormSet  ) {  LIST_ENTRY             *StorageList;  FORMSET_STORAGE        *Storage;  StorageList = GetFirstNode (&FormSet->StorageListHead);  if (!IsNull (&FormSet->StorageListHead, StorageList)) {    Storage = FORMSET_STORAGE_FROM_LINK (StorageList);    return Storage;  }    return NULL;}
开发者ID:AshleyDeSimone,项目名称:edk2,代码行数:25,


示例23: FindFilterDriverByEvent

/**  Search the Head list for a EFI_DATA_HUB_FILTER_DRIVER member that  represents Event and return it.  @param Head   Pointer to head of dual linked list of EFI_DATA_HUB_FILTER_DRIVER structures.  @param Event  Event to be search for in the Head list.  @retval EFI_DATA_HUB_FILTER_DRIVER  Returned if Event stored in the Head doubly linked list.  @retval NULL                        If Event is not in the list**/DATA_HUB_FILTER_DRIVER *FindFilterDriverByEvent (  IN  LIST_ENTRY      *Head,  IN  EFI_EVENT       Event  ){  DATA_HUB_FILTER_DRIVER  *FilterEntry;  LIST_ENTRY              *Link;  for (Link = GetFirstNode(Head); Link != Head; Link = GetNextNode(Head, Link)) {    FilterEntry = FILTER_ENTRY_FROM_LINK (Link);    if (FilterEntry->Event == Event) {      return FilterEntry;    }  }  return NULL;}
开发者ID:bhanug,项目名称:virtualbox,代码行数:29,


示例24: QNCSmmPeriodicTimerClearSource

VOIDQNCSmmPeriodicTimerClearSource (  IN QNC_SMM_SOURCE_DESC     *SrcDesc  )/*++Routine Description:  This function is responsible for calculating and enabling any timers that are required  to dispatch messages to children. The SrcDesc argument isn't acutally used.Arguments:  SrcDesc - Pointer to the QNC_SMM_SOURCE_DESC instance.Returns:  None.--*/{  DATABASE_RECORD   *RecordInDb;  LIST_ENTRY        *LinkInDb;  QNCSmmPeriodicTimerProgramTimers ();  //  // Reset Elapsed time  //  LinkInDb = GetFirstNode (&mPrivateData.CallbackDataBase);  while (!IsNull (&mPrivateData.CallbackDataBase, LinkInDb)) {    RecordInDb = DATABASE_RECORD_FROM_LINK (LinkInDb);    if (RecordInDb->ProtocolType == PeriodicTimerType) {      //      // This child is registerd with the PeriodicTimer protocol and Callback      // has been invoked, so reset the ElapsedTime to 0      //      if (RecordInDb->CommBuffer.PeriodicTimer.ElapsedTime >= RecordInDb->ChildContext.PeriodicTimer.Period) {        RecordInDb->CommBuffer.PeriodicTimer.ElapsedTime = 0;      }    }    LinkInDb = GetNextNode (&mPrivateData.CallbackDataBase, &RecordInDb->Link);  }}
开发者ID:OznOg,项目名称:edk2,代码行数:44,


示例25: InternalAllocPoolByIndex

/**  Internal Function. Allocate a pool by specified PoolIndex.  @param  PoolType              Type of pool to allocate.  @param  PoolIndex             Index which indicate the Pool size.  @param  FreePoolHdr           The returned Free pool.  @retval EFI_OUT_OF_RESOURCES   Allocation failed.  @retval EFI_SUCCESS            Pool successfully allocated.**/EFI_STATUSInternalAllocPoolByIndex (  IN  EFI_MEMORY_TYPE   PoolType,  IN  UINTN             PoolIndex,  OUT FREE_POOL_HEADER  **FreePoolHdr  ){  EFI_STATUS            Status;  FREE_POOL_HEADER      *Hdr;  POOL_TAIL             *Tail;  EFI_PHYSICAL_ADDRESS  Address;  SMM_POOL_TYPE         SmmPoolType;  Address     = 0;  SmmPoolType = UefiMemoryTypeToSmmPoolType(PoolType);  ASSERT (PoolIndex <= MAX_POOL_INDEX);  Status = EFI_SUCCESS;  Hdr = NULL;  if (PoolIndex == MAX_POOL_INDEX) {    Status = SmmInternalAllocatePages (AllocateAnyPages, PoolType,                                       EFI_SIZE_TO_PAGES (MAX_POOL_SIZE << 1),                                       &Address, FALSE);    if (EFI_ERROR (Status)) {      return EFI_OUT_OF_RESOURCES;    }    Hdr = (FREE_POOL_HEADER *) (UINTN) Address;  } else if (!IsListEmpty (&mSmmPoolLists[SmmPoolType][PoolIndex])) {    Hdr = BASE_CR (GetFirstNode (&mSmmPoolLists[SmmPoolType][PoolIndex]), FREE_POOL_HEADER, Link);    RemoveEntryList (&Hdr->Link);  } else {    Status = InternalAllocPoolByIndex (PoolType, PoolIndex + 1, &Hdr);    if (!EFI_ERROR (Status)) {      Hdr->Header.Signature = 0;      Hdr->Header.Size >>= 1;      Hdr->Header.Available = TRUE;      Hdr->Header.Type = 0;      Tail = HEAD_TO_TAIL(&Hdr->Header);      Tail->Signature = 0;      Tail->Size = 0;      InsertHeadList (&mSmmPoolLists[SmmPoolType][PoolIndex], &Hdr->Link);      Hdr = (FREE_POOL_HEADER*)((UINT8*)Hdr + Hdr->Header.Size);    }  }
开发者ID:mdaniel,项目名称:virtualbox-org-svn-vbox-trunk,代码行数:55,


示例26: UpdatePackListWithOnlyIfrPack

/**  Insert the String Package into the Package Lists which has the TAG GUID matching  the PackageListGuid of the String Package.   The Package List must have only IFR Package and no String Package.   Otherwise, ASSERT.  @param Private                      The HII THUNK driver context data.  @param StringPackageThunkContext    The HII THUNK context data.  @param StringPackageListHeader      The String Package List Header.  **/VOIDUpdatePackListWithOnlyIfrPack (  IN       HII_THUNK_PRIVATE_DATA      *Private,  IN       HII_THUNK_CONTEXT            *StringPackageThunkContext,  IN CONST EFI_HII_PACKAGE_LIST_HEADER *StringPackageListHeader  ){  EFI_STATUS                 Status;  LIST_ENTRY                 *Link;  HII_THUNK_CONTEXT          *ThunkContext;  Link = GetFirstNode (&Private->ThunkContextListHead);  while (!IsNull (&Private->ThunkContextListHead, Link)) {    ThunkContext = HII_THUNK_CONTEXT_FROM_LINK (Link);    if (StringPackageThunkContext != ThunkContext) {      //      // Skip the String Package Thunk Entry itself.      //          if (CompareGuid (&StringPackageListHeader->PackageListGuid, &ThunkContext->TagGuid)) {        ASSERT (ThunkContext->StringPackageCount == 0 && ThunkContext->IfrPackageCount == 1);        ThunkContext->StringPackageCount = GetPackageCountByType (StringPackageListHeader, EFI_HII_PACKAGE_STRINGS);                Status = mHiiDatabase->UpdatePackageList (                                              mHiiDatabase,                                              ThunkContext->UefiHiiHandle,                                              StringPackageListHeader                                              );        ASSERT_EFI_ERROR (Status);        ThunkContext->SharingStringPack = TRUE;        StringPackageThunkContext->SharingStringPack = TRUE;      }    }        Link = GetNextNode (&Private->ThunkContextListHead, Link);  }}
开发者ID:EvanLloyd,项目名称:tianocore,代码行数:56,



注:本文中的GetFirstNode函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GetFirstSelectedItemPosition函数代码示例
C++ GetFirstMember函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。