簡體   English   中英

copyfile_state_get始終顯示0

[英]copyfile_state_get always showing 0

我一直在嘗試使用Apple的COPYFILE庫(用C語言編寫)來創建我正在制作的程序(用C ++編寫)。 我已經完成了大部分工作,但我無法弄清楚如何獲得字節數。 文檔

COPYFILE_STATE_COPIED

獲取到目前為止復制的數據字節數。 (僅對copyfile_state_get()有效;有關回調的更多詳細信息,請參見下文。)dst參數是指向off_t的指針(類型為off_t *)。

copyfile_state_get()的用法如下(來自相同的文檔):

copyfile_state_get(copyfile_state_t state, uint32_t flag, void * dst);

我目前的代碼看起來像這樣:

// Main function:
off_t* currentBytes = 0;
copyfile_state_t state = copyfile_state_alloc();
copyfile_flags_t flags = COPYFILE_RECURSIVE | COPYFILE_DATA;
copyfile(//SOURCE, //DESTINATION, state, flags);

// Somewhere in the callback function:
cout << copyfile_state_get(state, COPYFILE_STATE_COPIED, currentBytes);

復制部分工作正常(文件被復制),但從回調函數輸出的所有內容都是0x0 我已經嘗試使用指向off_t的指針,這確實給了我一個實際的地址(?),例如0x10335ad5c8 ,但是我似乎無法再進一步了。 我對指針和地址並不是很熟悉,所以也許我錯過了一些東西,但我希望有人可以指出我正確的方向。

看起來你應該使用這樣的東西來傳遞off_t的地址,這樣copyfile_state_get(...)就可以填入這個值。

同樣正如文件所述;

All of the other functions return 0 on success, and less than 0 on error.

您可能希望打印currentBytes而不是返回值。

off_t currentBytes = 0; // Space for an actual off_t
...
// Somewhere in the callback function
copyfile_state_get(state, COPYFILE_STATE_COPIED, &currentBytes);
cout << currentBytes;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM