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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ssmylh
April 13, 2025
4.4k
0
Share
Windows Cloud Files API で遊びたかった
2025/04/12
鳴子温泉での開発合宿
ssmylh
April 13, 2025
More Decks by ssmylh
See All by ssmylh
Bluetooth Low Energy ことはじめ
ssmylh
0
1
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
560
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
360
Discover your Explorer Soul
emna__ayadi
2
1.1k
Balancing Empowerment & Direction
lara
6
1.1k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Crafting Experiences
bethany
1
150
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
250
Paper Plane (Part 1)
katiecoart
PRO
0
7.6k
Amusing Abliteration
ianozsvald
1
170
Why Our Code Smells
bkeepers
PRO
340
58k
Designing for humans not robots
tammielis
254
26k
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