第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在registry.GetValue中使用[]byte作為緩沖區(qū)?

如何在registry.GetValue中使用[]byte作為緩沖區(qū)?

Go
蝴蝶刀刀 2023-07-31 17:28:54
注冊表包中的文檔GetValue()說:GetValue 檢索與打開密鑰 k 關(guān)聯(lián)的指定值的類型和數(shù)據(jù)。它填充緩沖區(qū) buf并返回檢索到的字節(jié)數(shù) n。如果 buf 太小而無法容納存儲的值,則會返回 ErrShortBuffer 錯誤以及所需的緩沖區(qū)大小 n。如果未提供緩沖區(qū),則返回 true 和實(shí)際緩沖區(qū)大小 n。如果未提供緩沖區(qū),則 GetValue 僅返回值的類型。如果該值不存在,則返回錯誤ErrNotExist。GetValue 是一個低級函數(shù)。如果值的類型已知,請改用適當(dāng)?shù)?Get*Value 函數(shù)?!本臀叶裕也恢雷员眄?xiàng)的值類型。但是,我只需要將值打印為字符串。GetValue()接受值名稱和“緩沖區(qū)”,但緩沖區(qū)的類型為 []byte。它不是通過引用傳遞的,所以我不能只是創(chuàng)建var buf []byte、傳遞它并讀取它。我無法用&buf(type *[]byte)傳遞它。我無法使用byte.Buffer(也類型不匹配)。我覺得我缺少一些非常簡單的東西。代碼:var buf []byte //????_, _, e := myKey.GetValue(valuename, buf)if e != nil {    panic(e)}fmt.Printf("Value: %s\n", string(buf)) // Prints blank
查看完整描述

1 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個贊

我想你提到的注冊表API是Windows注冊表。要使用這些類型的 API,您必須對您期望的調(diào)用輸出大小做出最佳猜測:


buf:=make([]byte,1024)

typ, n, e := myKey.GetValue(valuename, buf)

if e==ErrShortBuffer {

   // Go back, try with a larger buffer size

   buf=make([]byte,n)

   typ, n, e = myKey.GetValue(valuename, buf)

}


查看完整回答
反對 回復(fù) 2023-07-31
  • 1 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號