Soumettre la recherche
Mettre en ligne
ATLに見る魔術
•
1 j'aime
•
1,978 vues
egtra
Suivre
Technologie
Signaler
Partager
Signaler
Partager
1 sur 21
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Javaセキュアコーディングセミナー東京第2回演習
Javaセキュアコーディングセミナー東京第2回演習
JPCERT Coordination Center
JavaScript入門
JavaScript入門
Ryo Maruyama
JavaScript 講習会 #1
JavaScript 講習会 #1
Susisu
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
Yuichi Sakuraba
Javaセキュアコーディングセミナー東京第1回 演習
Javaセキュアコーディングセミナー東京第1回 演習
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
200319 eash python_shareslide_functions
200319 eash python_shareslide_functions
Hiroki Katayama
HDCLT
HDCLT
Daigaku Ando
Recommandé
Javaセキュアコーディングセミナー東京第2回演習
Javaセキュアコーディングセミナー東京第2回演習
JPCERT Coordination Center
JavaScript入門
JavaScript入門
Ryo Maruyama
JavaScript 講習会 #1
JavaScript 講習会 #1
Susisu
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
Yuichi Sakuraba
Javaセキュアコーディングセミナー東京第1回 演習
Javaセキュアコーディングセミナー東京第1回 演習
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
200319 eash python_shareslide_functions
200319 eash python_shareslide_functions
Hiroki Katayama
HDCLT
HDCLT
Daigaku Ando
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
egtra
Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析
Mr. Vengineer
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
Objc lambda
Objc lambda
matuura_core
Java電卓勉強会資料
Java電卓勉強会資料
Toshio Ehara
Trait in scala
Trait in scala
Yuta Shimakawa
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
Toshio Ehara
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
C++11とゲーム製作
C++11とゲーム製作
uchan_nos
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
Mr. Vengineer
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
XMLPro 4回目 文字入力 条件分岐
XMLPro 4回目 文字入力 条件分岐
XMLProJ2014
SEH on mingw32
SEH on mingw32
kikairoya
関数型プログラミング in javascript
関数型プログラミング in javascript
Ryuma Tsukano
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Improvement future api
Improvement future api
Akira Takahashi
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説
JPCERT Coordination Center
Villegas first pacsec_2016-jp
Villegas first pacsec_2016-jp
PacSecJP
T93 com入門
T93 com入門
伸男 伊藤
VerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
Contenu connexe
Tendances
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
egtra
Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析
Mr. Vengineer
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
Objc lambda
Objc lambda
matuura_core
Java電卓勉強会資料
Java電卓勉強会資料
Toshio Ehara
Trait in scala
Trait in scala
Yuta Shimakawa
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
Toshio Ehara
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
C++11とゲーム製作
C++11とゲーム製作
uchan_nos
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
Mr. Vengineer
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
XMLPro 4回目 文字入力 条件分岐
XMLPro 4回目 文字入力 条件分岐
XMLProJ2014
SEH on mingw32
SEH on mingw32
kikairoya
関数型プログラミング in javascript
関数型プログラミング in javascript
Ryuma Tsukano
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
Improvement future api
Improvement future api
Akira Takahashi
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説
JPCERT Coordination Center
Villegas first pacsec_2016-jp
Villegas first pacsec_2016-jp
PacSecJP
Tendances
(20)
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Objc lambda
Objc lambda
Java電卓勉強会資料
Java電卓勉強会資料
Trait in scala
Trait in scala
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
C++11とゲーム製作
C++11とゲーム製作
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
TensorFlow XLA 「XLAとは、から、最近の利用事例について」
Async design with Unity3D
Async design with Unity3D
XMLPro 4回目 文字入力 条件分岐
XMLPro 4回目 文字入力 条件分岐
SEH on mingw32
SEH on mingw32
関数型プログラミング in javascript
関数型プログラミング in javascript
Emcjp item21
Emcjp item21
Improvement future api
Improvement future api
研究生のためのC++ no.2
研究生のためのC++ no.2
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説
Villegas first pacsec_2016-jp
Villegas first pacsec_2016-jp
Similaire à ATLに見る魔術
T93 com入門
T93 com入門
伸男 伊藤
VerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
Kazuki Takai
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
T90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvm
伸男 伊藤
Spring3.1概要x di
Spring3.1概要x di
Yuichi Hasegawa
PCL
PCL
Masafumi Noda
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compiler
nothingcosmos
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
junichi anno
HTML5最新動向
HTML5最新動向
Shumpei Shiraishi
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
yaegashi
170622 02
170622 02
openrtm
Exploring the x64
Exploring the x64
FFRI, Inc.
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
Fujio Kojima
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
Introduction to cython
Introduction to cython
Atsuo Ishimoto
Using xvim with macvim
Using xvim with macvim
pebble8888
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
Masahiro Sakai
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
Similaire à ATLに見る魔術
(20)
T93 com入門
T93 com入門
VerilatorとSystemC
VerilatorとSystemC
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
T90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvm
Spring3.1概要x di
Spring3.1概要x di
PCL
PCL
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compiler
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
HTML5最新動向
HTML5最新動向
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
170622 02
170622 02
Exploring the x64
Exploring the x64
scala+liftで遊ぼう
scala+liftで遊ぼう
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
Introduction to cython
Introduction to cython
Using xvim with macvim
Using xvim with macvim
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Plus de egtra
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
egtra
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
Casablanca
Casablanca
egtra
Firefox拡張機能を始める
Firefox拡張機能を始める
egtra
再変換 (K2Editor)
再変換 (K2Editor)
egtra
C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra
char32_tとXpressiveと
char32_tとXpressiveと
egtra
Boost.Range入門
Boost.Range入門
egtra
Boost.Graph入門
Boost.Graph入門
egtra
Plus de egtra
(9)
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
Casablanca
Casablanca
Firefox拡張機能を始める
Firefox拡張機能を始める
再変換 (K2Editor)
再変換 (K2Editor)
C++11概要 ライブラリ編
C++11概要 ライブラリ編
char32_tとXpressiveと
char32_tとXpressiveと
Boost.Range入門
Boost.Range入門
Boost.Graph入門
Boost.Graph入門
Dernier
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
Dernier
(7)
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
ATLに見る魔術
1.
ATLに見る魔術 H.24/09/15 Egtra 第2回闇鍋プログラミング勉強会発表資料
2.
ATL • Active Template
Library –Visual C++ 付属 –COMまわりの面倒を見てく れる –テンプレートが沢山
3.
COM • IUnknown
–QueryInterface –AddRef –Release • 参照カウント・キャスト
4.
モジュール • DLLやEXE(プロセス)も参 照カウントで管理
5.
典型的な実装 class Hoge
: public IUnknown { Hoge() { Module Lock; } AddRef() { ++count; }
6.
典型的な実装 (2) Release() {
auto old = --count; if (old == 0) { Module Unlock; delete this;
7.
ATLの基本 class Hoge
: public CComObjectRoot , ……(その他インタフェース) { // 実装 };
8.
ATLの基本 (2) • Hogeクラスではなく、
CComObjectでオブジェクト を作る CComObject<Hoge>* obj; CComObject<Hoge> ::CreateInstance(&obj);
9.
ATLの基本 (3) class CComObjectRoot
{ InternalAddRef() {} InternalRelease() {} long count; };
10.
ATLの基本 (4) template<class T> class
CComObject : T { virtual ULONG AddRef() override { return InternalAddRef(); } // QueryInterface/Releaseも同様 };
11.
ATLの基本 (5) • 実装(Hoge)は多数のインタ
フェースから派生 • 各インタフェースすべて IUnknownから派生
12.
ATLの基本 (6) Hoge • IStream
– ISequentialStream •IUnknown – IDispatch •IUnknown
13.
ATLの基本 (7) • 継承のツリーにある
IUnknownすべてをoverride するには 最派生クラスしかない
14.
ATLでの参照カウント実装 • CComObject • CComObjectNoLock •
CComObjectGlobal • CComObjectStack(Ex)
15.
CComObjectGlobal • グローバル・静的変数用 AddRef() {
_Module.Lock(); }
16.
CComObjectStack • 自動変数(ローカル変数) AddRef() {
// 何もしない! }
17.
2つの顔を持つオブジェクト • おさらい: IUnknown
–virtual QueryInterface(); –virtual AddRef(); –virtual Release();
18.
2つの顔を持つオブジェクト (2) • _ICPLocator
– virtual _LocCPQueryInterface(); – virtual AddRef(); – virtual Release();
19.
2つの顔を持つオブジェクト (3) Hoge* hoge; IUnknown*
obj = hoge; IUnknown* obj2 = reinterpret_cast<IUnknown*>( (_ICPLocator*)hoge);
20.
2つの顔を持つオブジェクト (4) • obj:
interfalce A, B, C • obj2: interface D, E, F • AddRef/Releaseは共有
21.
This work is
licensed under a Creative Commons Attribution- ShareAlike 2.1 Japan License.
Télécharger maintenant