Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Windows Cloud Files API で遊びたかった
Search
ssmylh
April 13, 2025
0
3k
Windows Cloud Files API で遊びたかった
2025/04/12
鳴子温泉での開発合宿
ssmylh
April 13, 2025
Tweet
Share
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
300
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Limits of Empathy - UXLibs8
cassininazir
1
200
Visualization
eitanlees
150
16k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
79
Context Engineering - Making Every Token Count
addyosmani
9
630
How to train your dragon (web standard)
notwaldorf
97
6.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Transcript
Windows Cloud Files API Ͱ༡ͼ͔ͨͬͨ @ssmylh
Cloud Files API ͱ • Windows 10 όʔδϣϯ 1709 (Fall
Creators Update) Ͱಋೖ͞Εͨɻ • Windows Ͱ OneDrive ͷ༷ʹϦϞʔτͷετϨʔδͱϩʔΧϧϑΝΠϧγεςϜΛ ౷߹͢Δҝͷ APIɻ • ϦϞʔτ্ͷϑΝΠϧΛϩʔΧϧϑΝΠϧγεςϜʹγʔϜϨεʹ౷߹͠ɺϩʔ ΧϧϑΝΠϧͷ༷ʹૢ࡞ՄೳʹͳΔɻ
༻ޠͱ͔ (1) • ಉظϧʔτ ◦ ಉظରͷϧʔτɻΤΫεϓϩʔϥͷπϦʔʹදࣔ͞ΕΔɻ • ΫϥυಉظϓϩόΠμʔ ◦ ...
༻ޠͱ͔ (2) • ϓϨʔεϗϧμʔϑΝΠϧ ◦ ϑΝΠϧγεςϜϔομʔʹରͯ͠ 1 KB ͷΈΛফඅ͠ɺ௨ৗͷ༻݅ԼͰ ʮશͳϑΝΠϧʯʹࣗಈతʹϋΠυϨʔτ͢Δɻ
• ϑΝΠϧͷঢ়ଶ ◦ ϓϨʔεϗϧμʔϑΝΠϧ ◦ શͳϑΝΠϧ ◦ ϐϯཹΊ͞ΕͨશͳϑΝΠϧ
API ܊ • Cloud Filter API (Win32 API) ◦ ϢʔβʔϞʔυͱϑΝΠϧγεςϜͷڥքͰػೳ͠ɺϓϨʔεϗϧμʔϑΝ
ΠϧͱσΟϨΫτϦͷ࡞ͱཧΛॲཧɻ • Windows.Storage.Provider (WinRT API) ◦ ಉظϓϩόΠμʔΛߏ͠ɺಉظϧʔτΛOSʹొՄೳɻ
αϙʔτ͞Ε͍ͯΔػೳ • ϓϨʔεϗϧμʔϑΝΠϧ • ඪ४Խ͞Εͨಉظϧʔτͷొ • γΣϧ౷߹ػೳ ◦ ৭ʑ… <-----
ࢼ͔ͨͬͨ͠ͱ͜Ζ
ެࣜαϯϓϧ CloudMirror αϯϓϧ • C++ • ͋ΔϩʔΧϧϑΥϧμʔΛϛϥʔ͢Δɻ • ϦϞʔτͷετϨʔδͱͯ͠ѻ͏ϑΥϧμʔͱಉظϧʔτͯ͠ѻ͏ϑΥϧμʔΛ ొ͢Δɻ
ެࣜαϯϓϧͷҝͷڥߏங • ࢲͷڥ ◦ MacBook Air M2 2022 ͔͜͜Β͕ࠈͷ࢝·Γ…
Windows ڥߏங ҎԼͷཧ༝͔Β UTM Λબ͠ɺɹWindows 11 ԾϚγϯΛߏஙɻ • ແྉ ◦
Parallels Desktop for Mac ༗ྉɻ • Apple γϦίϯରԠ Oracle VirtualBox Windows ະରԠɻ
ެࣜαϯϓϧΛಈ͔͢ (߹॓ͷલ) ಉظϧʔτʹදࣔ͞Εͨ 1ͭͷϑΝΠϧ͕։͚ͨͷͰɺ·͍͍͊ͩΖ͏ͱࢥͬͯ߹॓ʹ Μͩɻ
ެࣜαϯϓϧΛಈ͔͢ (߹॓) ಉظϧʔτʹϑΝΠϧ͕දࣔ͞ΕΔ͕ɺ։͚Δ࣌͋Δ͕ɺ݁ߏͳසͰΤϥʔ͕ग़ Δɻ
σόοά (ྦ) • ରϑΝΠϧͷಡΈऔΓॲཧͷҎԼͷՕॴͰΤϥʔͱͳ͍ͬͯͨɻ ◦ https://github.com/microsoft/Windows-classic-samples/ blob/2b94df5730177ec27e726b60017c01c97ef1a8fb/Samples/CloudMirror/ CloudMirror/FileCopierWithProgress.cpp#L139 • Win32
ͷඇಉظ I/O APIʹͳ͡Έ͕ແ͍ͷͰযΔ…
͠…ʂ • ެࣜαϯϓϧͷରϓϥοτϑΥʔϜ x86 ͚ɻ • ࣗͷ Windows ԾϚγϯ ARM64ɻ
• ެࣜαϯϓϧͷରϓϥοτϑΥʔϜΛ ARM64 ʹͯ͠Ϗϧυ͢Ε…!
ಈ͔ͳ͍ʂ • શ͘ঢ়گ͕มΘΒͣɻ • มΘͬͨͷա͗ڈͬͨ࣌ؒͷΈ… • ઢΛม͑ͯɺCloud Files API Λ༻ͨ͠
C# ͷ OSS (cfapiSync) Λಈ͔ͯ͠Έ Δɻ
ಈ͘ʂ • ͭ·ΓɺެࣜαϯϓϧʹԿ͔͓͔͍͠ͱ͜Ζ͕͋Δʁ • ެࣜαϯϓϧͷඇಉظಡΈऔΓͰ༻͍ͯ͠Δ ֤ API Λௐࠪɻ
͕͓͔͍͜͜͠ʁ • ੈؒͰΑ͋͘Δαϯϓϧ ◦ ReadFile + GetOverlappedResult ◦ ReadFileEx +
ྃϧʔνϯ • ެࣜαϯϓϧ ◦ ReadFileEx + ྃϧʔνϯ + GetOverlappedResult
ಈ͍ͨʂ ެࣜαϯϓϧͷ GetOverlappedResult ͷݺͼग़͠ Λআͨ͠Βಈ͍ͨʂ
Θͨ͠ͷ࣌ؒ ྦɻ
·ͱΊ • ຊ͏গ͠ຊདྷͷಉظΤϯδϯ෦Λ͍ͬͯ͡Έ͔ͨͬͨɻ • Command Ωʔ͕ Windows ΩʔʹׂΓ͋ͨͬͯͨͷͰɺλΠϓϛεසൃɻ Windows ͷ։ൃ
Windows ࣮ػ͕͍͍ͳɻ
ࢀߟ • ϓϨʔεϗϧμʔ ϑΝΠϧΛαϙʔτ͢ΔΫϥυಉظΤϯδϯΛߏங͢Δ • CloudMirror αϯϓϧ • cfapiSync