Skip to main content

Full text of "Sigmarion III Windows CE 4.10 SDK for eMbedded Visual C++ 4.0"

See other formats


si gnmri onIII ソフ ト ウェ ア 開 発 用 資料 


第 1 版 
日 本 電気 株 式 会 社 


本 資料 に 関し て の 注意 


本 資料 中 に 記載 され る 会 社名 、 製 品名 等 は 各社 の 商標 また は 登録 商標 で す 。 
本 資料 の 内 容 の 一 部 また は 全部 を 無断 で 転載 する こと は 禁止 され て いま す 。 


本 資料 は 改良 等 の た め 予 告 な し に 変更 する 場合 が ご ざい ます 。 

本 資料 記載 の 情報 に より 生じ た いか な る 損害 に つい て も 日 本 電気 株 式 会 社 は その 責 を 負い ませ 
ん の で 、 あ ら か じ め ご 了承 く だ さい 。 

本 資料 中 に 「 、「 |、「 @| 等 の マー ク は 表記 し て お り ま せん 。 


NEC Confidential 1 


NN 3 
2 il 開 28 提 の (本業 ANAN の en2Aunnnn 4 
2 1 間 作 の 00 4 
2 の の あり たま TRNAAETCWRRCRYXRRNCRNC 衝 WCHRTCNERRCRYRRKCRNCREBPHRRCRRPBERPRRRCJRK7RRPPRRRZRRRERIRRRPREATRERRFTCRT 4 
7 の 0 の ん デー ツク RE 5 
の まで の KU NO の 2 た 和訳 記 衣 NN 8 
0 に の OO 生 0 9 
リプ トウ まだ を 牧村 する 際 の 洋間 OAMdo0a9 か sao0a9000000R0aAH390t3SO39AaSA00039SO2R63SA090d39SGo2830855 10 
3 RESRRSRRSRSSHSSRSSSERREEHRRRSRRSHRRRRSRRRRRRRRRRRRRRERRRRRRRGRRRRERRSRRBRR 10 
2 11 
2 2 に MURAOERRRS283R3BBSRRBGBRRSSYOGRSRRSCHCR8SRRPSGRRRESGBGRRES63CHRSBG3CRRBCHOIRSEBCRSR 12 
に 3 こり 0 0 ンプ リル ンタ ン YY 12 
者 0006 請 6050808CSOGOSCSHSGSCSORIe 12 
人 剛 殿 周 ffONIUI 理 用 33SineSeSae ss 13 
の iR RRB 13 
oh の 0 の グラ た の クト 0 伸介 0 六 2029022Pa023825292958298 が 82282088B3829C82g298pagaze 13 
3320 2 の NSP2A00 ポ や 3 衣 府 RE 14 
oo 2 の の の ey の の 0 00 の マテ Stakhcikts 15 
。 1c ウツ クラ イト ドジ ハイ ズ の 側 伯 UE 計 記 記 16 
(CIKODNGEOINMKINGMN GBS PenHRO2AAann 18 

に に 21N0LORNSKDUGEHE SSSNNKNSEhiRiNeNHNOEeRSGGNiaWaiaeaeie 19 

( 旨 6 ら 9) 矯 IEG MES NG 上 (6 WS1DSUBD27 時 年 時 時 FFP FPP 20 
 - 間 0NCOHESNGNIGMNSRISIMM 21 
人 2 インク aaay900o020802636098020208923084369329212928880832938328980383882263232388988808888c2 22 
Ke SR ジー ンク ASSRSARRSESSRRSIASSReR。 24 
2 20 本 本 の 人 NINENNBINRIEIRISIIBSNSSSISSSNSS 24 
5 に AN に 70PeRESRRSERPERWEKRERREPReREERW 放 PE 28 
8 20 2 た 本 UNDP 29 
os 月 思 時 に お ば る ポル ゲー ツン ョ ラン 相国 31 
お 02005c 0 間 0O0 ア の リ その 2 旨 邊 記 記 RI 36 
92 た PSBI/2 用 たび TRESFRRRRTEZRRERPHBRERERETRRRREREERPRERREERPSRERERRRRTER RE 40 
228 で 人 ド ツ の 必 : の Jengezedgnggdd9gugddgB2gtd00520028602udg9pa0un2903ug5208yoo9agazagogegzdggeeos 43 
ON 45 
9 の の WM の NZ KO 失策 間 ONs 47 
ei0 ジル ント 突 更 和 衣 記 記 SSSSS 51 
PIPE 56 


NEC Confidential 2 


1 . は じ め に 


本 書 は signmrionIII で 動作 する ソフ ト ウェ ア 開 発 に 必要 な 情報 を 記載 し た 資料 で す 。 


signarionlII は Wndovs CE.NT 41 を 搭 


以下 の 違い が あり ます 。 


渡し た 携帯 端末 で 、signmrionII と 比較 する と 


S1 grmT1 Orl 1 S1 grimri Onl 11 
て で U VR4131 200ML ( MR 系 ) PXA255 400Mz ( ARV 需 ) 
メ モリ (RAM 32M バ イト ※ 64M バ イト ※ 
画素 数 640X 240 ド ッ ト 800X 480 ド ッ ト 
カー ド スロ ッ ト | 外 729 池 カド 名 (TpeIt) メ 1 | 1 外 729 池 か カド 旬 y( TpetI) メ 1 
MSD 才 りか カー トド Xny ト (STIO 対 応 )X 1 
〇 5 Wndovs CE Ver3.0 Wndovs CE .NYT Ver4 1 
開発 ツー ル eMbedded VM sual CH3.0 十 SLK 等 | eMbedded Msual GH4.0 十 SLK 等 


※O 〇 ブログ ラム 実行 領域 含む 


NEC Confidential 


2 . 開発 環境 の 構築 


2. 1 開発 ツー ル 
以下 の ツー ル を 使用 し て ソフ トウ ェ ア を 開発 し ます 。 
・eMbedded Vsual CH 40 
・eMbedded Msual CHF 4 0 Service PFack 1 
・ Standard SLK( eM5edded M sual CH+ 4 0 に 含ま れ ま す ) 
・SsigrwmrionlII SIKfor Wndows CG . NT 
※ 各 ツー ル の 使い 方 は 、 そ れ ぞ れ に 付属 する ド キュ メン ト を 参照 し て くだ さい 。 


2.2 開発 ツー ル の 入手 方 法 


( 1 ) eMbedded Vsual GH 4.0 の 入手 
以下 の ホー ムペ ー ジ より eM5edded Vsual CH 4 0 を ダウ ン ロ ー ド し ます 。 
Http: //www mcrosoft. corj apar/rsdm/vst udi o/ devi ce/eVC downl oad asp 
(注意) URL は 2003 年 8 月 現在 の アド レス で す 。 


( 2 ) eMbedded Msual GH 4 0 Service Pack 1 の 入手 
以下 の ホー ムペ ー ジ より eM5edded Msual Gr+ 4.0 Service Pack 1 を ダウ ン ロ ー ド し ます 。 
Http: //www mcrosoft. corj apan/nsdm/vst udi o/ devi ce/eVJ4SP1. asp 
(注意) UL は 2003 年 8 月 現在 の アド レス で す 。 


(3 ) signmrionlII STKfor Wndovs C .NYT の 入手 


以下 の URL か ら ア クセ ス し 、 必 要 事 項 を 登録 する と ダウ ン ロ ー ド サイ ト の URL が メー ル で 通知 され ます 。 
Http //wwv pdaDi Z.jp/cat al og/si g3/sdk/ 


NEC Confidential 4 


2 . 3 開発 ツー ル の イン スト ー ル 


( 1 ) eM5edded Vsual CH 4 0 の イン スト ー ル 
以下 の 手順 で eMpedded Msual CHH 40 を イン スト ー ル し ます 。 
① ダ ウン ロー ド し た eM5edded Msual CHF 4 0 の JA eV4 exe を 実行 し 、 解 凍 し ます 。 
② 解 凍 フ ォ ル ダ 内 の Setup. exe を 実行 し ます 。 
③ 画 面 の 指示 に 従っ て イン スト 一 ル し ます 。 
④CQ 〇 ① キ ー を 聞い て きま す の で 、 〇 ① キ ー を 入れ ます ( の ① キ ー は eMbedded VM sual CHH 4 0 ダウ ン ロ ー ド 
サイ ト に 表記 され て いま す の で 事前 に 控え て お いて くだ さい )。 


し < 玩 @ | が > | Wwr 


⑤「 eMbedded V sual CGCH4 0 の イン スト ー ル 」 ダ イア ログ が 表示 され た ら 「 eM5pedded Msual GH 4 0] 
と 「 Standard SLKfor Wndovs C NET」 の 両方 に チェ ッ ク を 入れ て 「 次 へ 」 を クリ ッ ク し ます 。 


BMDGHHe1 Visual C++ 4.0 の イン スト ー ル 
| の:2 鍵 Ta 


NEC Confidential 5 


⑥⑧⑨ 次 の オプ ショ ン の 中 か ら イ ンス ト 一 ル す る 項目 .. . 」 の ダイ アロ グ が 表示 され た ら 「 eM5eddedV sual 
CH+ 4 0| を 反転 させ 、「 オプ ショ ン の 変更 」 を クリ ッ ク し て くだ さい 。 


elbedded Visual C+ 40 セッ ト ア アプ 1? 1 X| 


の 62 ト こ ル き る 天目 あい テッ ウマ ー ク sHU て YES イン スト し ei 

プッ ョ な ー ネ ン ト の 一 部 けが イン スト ー ル され ます 。 すべ て の コン ポー ネン ト を イン ス 

こ ル す MES の AE 
F wi 735 5 


説明 : 


icrosoft elMbedded Visual 


Vigual し 


ー イ ンス トー ル 先 フォルダ 
D*Froeram files\NMicrosoft ebsdGed Cre 40 フォ ル が の 案 更 (E). 
D に 必 雪 な 宇垣 : ーー プー 
b の 空き 容量 . 日 


奏 続 G) | キャ ッ セ ル | 
⑦CU タ イプ の 指定 を する 画面 が 表示 され ます の で 「 ARWAI」 が 選択 され て いる こと を 確認 し ます 。 
認 後 、 イ ンス トー ル 作 業 を 続け て くだ さい 。 
※ そ の 他 の CU タイ プ は 必要 に 応じ て 選択 し て くだ さい 。 
cbeddcd Visusl CO 40 - カス な ム オプ ジョン 21X| 
。 が に ル す る 天目 を 葉 択 い チ T5 ウ マー の を 付け て くだ さい 。 イン スト ー ル し な (いい 項 目 は 、 


ユウ 

上 示 ポー ネン ト の 一 部 だ けが イン スト ー) べ C の コン ポー ネン ト を で 
CET キッ CreD メ ネン トキ 
オプ ショ ン ⑩) 記 明 
aaAauk ポー ト け の 
アイ ル を イン スト ー ル し ま 


ー イ ンス トー ル 先 の フル 
DYrrowram files\Microsoft ebedded G+ 40 
D に 必 委 な 宮 量 : Re 日 
b の 空き 容量 PB 


heytr | 


⑧eMbedded Msual CHF 4 0 イン スト ー ル 終了 後 、「 Standard SLKfor Wndows CE .NET セッ ト アッ プ 
ウィ ザー ド へ よう こそ 」 が 表示 され ます の で 、「 次 へ 」 を 選択 し 、 イ ンス トー ル 作 業 を 継続 ・ 完了 さ 
せ て くだ さい 。 


IT SIardard SUK 1or Wirndowes CE 


5 Standard SDK for Vindows CE_ 
8 セッ ト ア ッ プ ウィ ザー ド へ よう 
こそ 


で ゼット アッ プ の < ザー ド で は Samderd 3DK for Windoms CE 
.NET を エビ ュー に イン スト ー ル し ます 。 [た へ ] を 5 5 り し て 推 
款 する か [キャンセル ) も の ゥ ウ し て セッ トチ 2 ブウ ィ ザ ー ド を -… 


NEC Confidential 6 


( 2 ) eMbedded Msual QH+ 4 0 Service Pack 1 の イン スト ー ル 


eMbedded VM sual CH 4 0 の イン スト 一 ル が 終了 し た ら 、 以 下 の 手 順 で eMbedded V sual GT 4 0 Service 
二 elk 1 を イン スドー ル し ます 。 


① ダ ウン ロー ド し た eMbedded Msual CHH 4 0 Service Pack 1 の eVJ4SP1J. exe を 実行 し 、 
解凍 し ます 。 


② 解 凍 フ ォ ル ダ 内 の Setup. exe を 実行 し ます 。 
③ 画 面 の 指示 に 従っ て イン スト ー ル し ます 。 


語 cMocdded Visusl Ct 4U SPT ゼット アッ プ 


eMbedded Visual C++ 4.0 SP1 セッ ト 
アッ プ ウィ ザー ド へ よう こそ 


セッ ト ア ッ ゥ プ ウィ ザー ド | は nf4bedded Jal C++ 4.0 SPI を ゴン 
ピュ ー 器 に イン スト ー ル し ます 。 [大 へ ] を りり ゥ クウ し て 終 行 する 地 、 
キャ ン ゼ セル ] を りり ゥ の し て セッ ト ア ゥ ブ ウィザー ド を 維 了 し ます 。 


( 3 ) signmmronIII SLK の イン スト ー ル 
eMbedded Msual Gr+ 4 0 Serwce Pack 1 の イン スト 一 ル が 終了 し たら 、「 signmrionIII_SLK nsi」 を 
実行 し 、 画 面 の 指示 に 従っ て イン スト ーー ル し て くだ さい 。 


: iemarion SDK セッ トッ プ | 


sigmarionll SDK セッ ト ア ッ プ ウィ 
で sy ザー ド へ よう こそ 


セッ ト ア ゥ プ ウィ ザー ド で は siomarionii SDK 正 能 の コリ ピュ ー タ 
へ の イ ンス トー ル の 方法 を 誠 ます 。 sigmarion]it SDK を コン 


っ 
る か (キャンセル を りり 5 り L て セッ ト P ッ プ ウィ ザー ド を 続 了 し て く 


に で し le 


NEC Confidential 7 


2 . 4 ソフ トウ ェ ア の コン パイ ル 
eMbedded M sual CHF 4 0 で プロ ジェ クト また は ワー クス ペー ス を 開き 、 以 下 の ( 1 ) て ( 3 ) の 設定 を 
し て か ら ア プリ ケー ショ ン を コン パイ ル し て くだ さい 。 


( 1 ) アク ティ ブ な 構成 の 設定 
メニ ュー バー の 下 に ある [アク ティ ブ な 構成 の 選択 ] ボッ クス で 「 Wn32( WP ANWAI) Rel ease」 
を 選択 し て くだ さい 。 
※ ア クティ ブ な 構成 は 、 メ ニュ ー か ら [ ビ ルド (B] つ [アク ティ ブ な 構成 の 設定 (0] を クリ ッ ク し 、 
一 覧 か ら 「 WWn32( WE ARWAI) Rel ease」 を 含ん だ プロ ジェ クト 構成 を 選択 し て 、[Q 
ボタ ン を クリ ッ ク す る こと で も 設定 で きま す 。 


nft eMbedd 1 は は ー ES cp 


ビ 
田 | 層 回 琶 |% 晶 島 |S・5 


| (Globals》 ( 向 川 glnbal members 国 ーー トー ペー 


Fr 嘱 igmarinnISDK 尾 上 in32 WOE ARMV4D BBlane6 ョ | arian 軸 SDK Deyice 時 


ーッ ョ ン 用 の エン トリ ボイン ト の 定 
曰 - 本 test1 classes P 


Hinclude “stdafx.h” 


( 2 ) アク ティ ブ な WE 構成 の 設定 
メニ ュー バー の 下 に ある [アク ティ ブ な WE 構成 を 選択 ] ボッ クス で 「 signmrionIII SLK 
を 選択 し て くだ さい 。 
※ ア クティ ブ な WE 構成 は 、 メ ニュ ー か ら [ビル ド (BB] 一 [アク ティ ブ プラッ ト フォ ー ム の 設定 (S) ] 
を クリ ッ ク し 、 一 覧 か ら 「 signmrionIII SLK 」 を 選択 し て 、[ CM ボタン を クリ ッ ク す る こと 
で も 設定 で きま す 。 


| Glahals』 | global members) ゅ w MyRegeisterClass 


nr _ 諾 e Enaronm SDK_ | 隊 in32 MGE RMM4D Release sjgmarian 還 SDK Device 司 


= 計 二 本 | // testl.cpp : アブ リケーション 用 の エン トリ ポイ ント の 定 
日 - 間 test1 classes // 


include “stdafx.h" 


NEC Confidential 8 


( 3 ) 既定 の デバ イス の 設定 


アク ティ ブ な WE 構成 の 設定 を 行う こと で 、 メ ニュ ー バ ー の 下 に ある [既定 の デバ イス の 選択 ] 
ボッ クス が 自動 的 に 「 signmrionIII SLK Tsvi ce 」 へ 変わ り ま す 。 


ebedde 10++ - [est1 cPF] 


EZ に 『 直 :」 ーー 時 


| (Glahals》 (AIlglnbal members) 国 | ぁ MyReeisterClass SIE シン 


or Femyom 品 ligmarinn 和 LSDK 。 思 "in32 MCE RMVdD Release Fme om SDK peer 


// test1.cpp : zer チ FE ソノ 用 G 
に EE コロ ーー // 


include “stdafx.h” 


2 . 5 ソフト ウェ ア の 動作 確認 と デバ ッ グ 
si gnmri onIII SLK 専 用 の エミ ュ レ ーション 環境 は あり ませ ん 。 


動作 確認 や デバ ッ ク す る 際 は signmri onIII 実機 を ご 用 意 頂 く か 、St andard SLK 内 の 標準 的 な 
エミ ュ レ ーション 環境 を 使用 し て くだ さい 。 


NEC Confidential 9 


3 . ソフ トウ ェ ア を 移植 する 際 の 注意 点 
si gnmri onlI 用 の ソフ トウ ェ ア は 、 以 下 の 点 に 注意 し て si gmmrionIII へ 移植 し て くだ さい 。 


3. 1 画面 サイ ズ 
si gmari onIII の 画面 サイ ズ は 800X 480 ド ッ ト の た め 、 表 示 を 行う ソフ トウ ェ ア は 
メニ ュー の 配置 や ウィ ンド ウサ イズ を 調整 し て くだ さい 。 


Handheld PC 2000 


は 村 き 12:00 邊 sigrmrionlII 


NEC Confidential 10 


3 . 2 フォ ント サイ ズ 設 定 
si grmrionIII で は コン トロ ー ル パネ ル の 「 フォ ント サイ ズ 設 定 」 プ ロ パ ティ を 使っ て 、 シ ステ ム フ ォ ント 
お よび スク ロー ル バ ー・ ボ タン の サイ ズ 変 更 を 標準 ・ 大 ・ 最 大 の 3 つの 設定 で 切り 替え る こと が で きま す 。 
表示 を 行う ソフ トウ ェ ア は サイ ズ 変 更 を 考慮 し て メニ ュー が 隠れ た り 、 ダ イア ログ が 画面 か ら は み 出 た りす 
る こと が な いよ うに メニ ュー の 配置 や ウィ ンド ウサ イズ を 調整 し て くだ さい 。 


イレ ち ーネット 鞍 情 誌 記 (所 加 ) 還 」 IOki 孤 ] 
1 
連 前 東 者 名 (WE 通 計 手品 (a) 
| 隊 革 電話 デー 応 画 放 ー ド ) 記 
2oNfiE | Wi モ - ド ) 関 
+ 外線 発信 番号 (に | 
還 い 7、 了 ウ セス ポイ ント (a) 
wwrewr = 
市 汗 記 替 (Cr| 電話 秋 号 Dilsenn 
Losw | | *re) | | *wcfy | 
プア オン ト サ イ ズ 「 標準 」 
gi の ヨ 6 う 川 ) 用 |lek| 了 | 
1/3 
通信 環境 名 (WW: 通信 手段 (M) 
了 了 電話 げ ー5 通 作 モ お) 
ブロ 内 イ 尽 (B): | | 
外線 発信 番号 (G): | 
知 林 専用 
ド の 他 アウ ゼス 直 イ ント AA) 


帯 電話 な 9601 マン TCP/IP の 設定 .… 仙 
市 外 局 番 (C): | 電話 番号 (D): oeo1 


フォ ント サイ ズ 「 大 ] 


イ ウ に イリ トロ 閣 信 設定 ( 下 加 ) 


173 
通信 環境 名 (W): 通信 手段 (M) 


具 帯 電話 (デー 通信 モー ド ) 
ブロ バイ (P): | | 


e 外線 発信 番号 (G): | 
アリ ゼス ポイ ント (A) 


陣 mgrzooh 。 
市 外 局 番 (C): | 電話 番号 (D): 謝 9601 


OMA 稀 末 専 用 
の 他 


フォ ント サイ ズ 「 最大 」 


NEC Confidential 11 


3. 3 カタ カナ 文字 の 表示 
Wndovws C む . NET で は メニ ュー や ダイ アロ グ な ど で 表 示す る カタ カナ 文字 に 全角 カタ カナ 文字 を 使用 し ます 。 


表示 を 行う ソフ トウ ェ ア は 半角 カタ カナ 文字 を 全角 カタ カナ 文字 へ 変更 し て くだ さい 。 


3 . 4 メモ リカ ー ド の フォ ル ダ 名 
デー タ の 保存 先 は 内 部 メモ リ 以外 に 以下 の 2 つの メモ リ カー ド の フォ ル ダ が あり ます 。 


コン バク トラ フラ ッシュ メモ リカ ー ド : “メモ リ カー ドア 
( 注意 ) ” メモ リ カー ド ” の カタ カナ 文字 は 全角 カタ カナ 文字 を 使用 し ます 。 
2 リ り / の カ ” の 間 に 半 角 ス ペー ス 文字 が 入り ます 。 


MMC プ SD メモ リカ ー ド 2726D 坦 り ドド 
( 注意 ) " SD メモ リ カー ド ” の カタ カナ 文字 は 全角 カタ カナ 文字 を 使用 し ます 。 
" げ と " メ ” の 間 、" リ ” と” カカ” の 間 に 半 角 ス ペー ス 文 字 が 入り ます 。 


3.5 イン スト ー ラ の 設定 
アプ リケーション の イン スト ー ラ ( QAB フ ァイル ) 作成 時 に 必要 な イン スト ー ル 設定 ファ イル 
( INY フ ァイル ) は 以下 の パラ メー タ を 指定 し て くだ さい 。 
FrocessorTVpe : 1824 
UnsupportedP atforns : ここ は 特に 指定 し な く て 良い で す 。 
VersionMn: 4 
VersionMz: 4 


NEC Confidential 12 


4 . Signarionlll 専用 AP 


4 . 1 バッ クラ イト 制御 


4. 1 . 1 バッ クラ イト デバ イス 制御 の 概要 
本 装置 の バッ クラ イト は 、 下 表 の よう に 輝 度 レ ベル 0 か ら 輝 度 レ ベル 7 まで の 8 段階 の 制御 が 可能 で す 。 


輝度 レベ ル 輝度 

/ 明る い 
6 

5 

タ バッ クラ イト N 

2 

層 

7 藻 い 
の バッ クラ イト CFF 


eateFile 関数 を 使っ て バッ クラ イト デバ イス を オー プン し 、PDevi cel oControl 関数 で バッ クラ イト 
デバ イス を 制御 し ます 。 


表 : バッ クラ イト 制御 の コン ト ロー ルコ ー ド 一 覧 


コン トロ ー ル コー ド 
IQCTT。 BAOIGTT GET STATIE | バッ クラ イト の 点灯 / 消 灯 情 報 を 取得 する 


IOPIT BACKIIGHT SET STATE バッ クラ イト の 点灯 / 消 灯 を 行う 
IOCITL BAOIGT_ GET_STATE2 | バッ クラ イト の 輝度 レベ ル 情 報 を 取得 する 


IOPIL BACKIGHT SET STAIE2 | バッ クラ イト の 輝度 レベ ル を 設定 する 


バッ クラ イト デバ イス の 制御 に 必要 な 構造 体 、 定 数 は 、 pc 刀 7g7Z. ヵ に 定義 され て いま す 。 
アプ リケーション プロ グラ ム は 、 コ ン パ イル 時 に 本 ファ イル を イン クル ー ド し て くだ さい 。 
標準 イン スト ー ル の 場合 の ZcZ7gZ. カ の 格納 先 は 以下 の 通り で す 。 


G 堂 rogramRil es や WWndows CE Tool s 3ce410 稚 1i gnmri onlI] SIRSW ncl ude 科 NNW 殺 


NEC Confidential 13 


4 . 1 . 2 バッ クラ イト デバ イス の オー プン 
CreateFile 関数 を 使っ て バッ クラ イト デバ イス を オー プン し ます 。 


HANYE eg7e77/ 
LPCISIR / り 7/ e/M7g 


DOD Os7 7e6 の cess 

DOD oroZz7e/l の 2 ら 

LPSEOHRTY ATTR BUTES 7S6cZ777 ア アル 777 7 gs, 
DOD Ogg77 77 57 77 7 の 7 

DVCD 77 2gsy4 ル 77 ル 777 7 9s, 

HANTE 77677 の / g7 67/ 6 


): 


パラ メー タ /。7/e/Mze 
バッ クラ イト デバ イス を 示す ヌル 文字 で 終わ る 文字 列 を 指す ポイ ンタ 。 こ の 文字 列 は 、 
“ BK1"” で な けれ ば な り ま せん 。 


Zs7 76 の cesy 
バッ クラ イト デバ イス の アク セス の 種類 を 指定 し ます 。GENERIC READ と GONERCVWRTE 
の 両方 を 指定 し て くだ さい 。 


Or6727e/l の 2 ら 
バッ クラ イト デバ イス の 共有 方 法 を 指定 し ます 。ILE SHARP READ と RIE SHNRE VA TE 
の 両方 を 指定 し て くだ さい 。 


7//56C77 7 アイ 777 太 克 es 
Wndows で は 、 こ の パラ メー タ は 無視 され ます 。NJL を 指定 し て くだ さい 。 


eg77 77 5777 77 7 
ファ イル が 存在 する と き 、 ま た は し な いと き の 動 作 を 指定 し ます 。 バッ クラ イト デバ イス 
を オー プン する と き は 、QOPENEXSTING を 指定 し な けれ ば な り ま せん 。 


Or77 ggsy422 イ 777 が ey 
バッ クラ イト デバ イス で は 、 こ の パラ メー タ は 無視 され ます 。0 を 指定 し て くだ さい 。 


767 の / 27 6777 6 
WndowsCE で は 、 こ の パラ メー タ は 無視 され ます 。NIL を 指定 し て くだ さい 。 


戻り 値 オー プン が 正常 に 終了 し た 場合 は 、 バ ッ ク ラ イト デバ イス の デバ イス ハン ド ル が 返り ます 。 
それ 以外 の 場合 は 、INAID FANTE VAIE が 返り ます 。 


NEC Confidential 14 


4. 1. 3 バッ クラ イト デバ イス の クロ ー ズ 
バッ クラ イト デバ イス の 制御 を 終了 する と き は 、d ロ oseHgndl e 関数 を 使っ て バッ クラ イト デバ イス の 
ハン ド ル を 無効 こ に し て くだ さい 。 


RT 0 ose/ 万 7 
HANTE 7 が eg7 


): 


パラ メー タ 7 eo/ 
オー プン され て いる バッ クラ イト デバ イス の デバ イス ハン ド ル を 指定 し ます 。 


戻り 値 クロ ー ズ が 正常 に 終了 し た 場合 は 、TRLE が 返り ます 。 そ れ 以 外 の 場合 は FALSE が 返り ます 。 


NEC Confidential 15 


4. 1. 4 バッ クラ イト デバ イス の 制御 
Devi cel oControl 関数 を 使っ て バッ クラ イト デバ イス に コン ト ロー ルコ ー ド を 直接 送り 、 指 定 の 動作 を 


実行 させ ます 。 


区 条 , 7 ce/ oC の 277 の / ( 
HANTE 27 と ら 
DCD Or7 oOC の 277 の C の 52 ら 
LPMVID 7 0/77 尽 が 7e7, 
DD 7/ 7 が 7o75 2 ら 
LPMID タプ 2 が ガン 
DCD 77 万 7e757 2 ら 


TPDXCD 7 の は 7 9s/ の 7 77722 の 
LPOMERAPFED 7 り づ 677 22O6 の 


パラ メー タ 7/ あ 7 Ce 
オー プン され て いる バッ クラ イト デバ イス の デバ イス ハン ド ル を 指定 し ます 。 


7OC の 777 の / C の 6 
バッ クラ イト の コン ト ロー ルコ ー ド を 指定 する 。 ア プリ ケー ショ ン は 、 以 下 に 示す 値 を 
指定 する こと が で きま す 。 
IOCTT BACKIGTT GET_STATE バッ クラ イト の 京 灯 / 消 灯 情 報 を 取得 する 。 
IOCTT BACHGTT SET_STATE バッ クラ イト の 京 灯 / 消 灯 を 設定 する 。 
IOCTT_BACIGTT GET_STATF2 バッ クラ イト の 輝度 レベ ル 情 報 を 取得 する 。 
IOCITL_BACIGTT SET_STATF2 バッ クラ イト の 輝度 レベ ル を 設定 する 。 
7//7 有 2 が 77 


goC の 777o7 C の oe で 指定 し た 動作 に 必要 な デー タ を 含む 構造 体 を 示す ポイ ンタ 。 
入力 デー タ を 必要 と し な い コ ント ロー ルコ ー ド を goCoz77o の ge に 指定 し た と き は 、 


NIL を 指定 し ます 。 


77 7 尽 が 7757 6 
7p/7 只 7er で 指定 し た バッ ファ の サイ ズ を バイ ト 単位 で 指定 し ます 。 


7 7 万 が 7g7- 
OroC の 77 の / Co26 で 指定 し た 動作 に 必要 な デー タ を 含む 構造 体 を 示す ポイ ンタ 。 
出力 デー タ を 必要 と し な い コ ント ロー ルコ ー ド を goCoz77o Co2e に 指定 し た と き は 、 


ロ 


NIL を 指定 し ます 。 


7 万 が er57 Z@ 


NEC Confidential 16 


戻り 値 


NEC Confidential 


7pOZZ7e7 で 指定 し た バッ ファ の サイ ズ を バイ ト 単位 で 指定 し ます 。 


// 尽 7 es/ や 7 7726 の 
7/ の 7 万 ZZ で 指定 し た バッ ファ に 実際 に 返さ れ た デー タ の バイ ト 数 を 受け 取る DWORD 変 
数 の ポイ ンタ 。 


7/ ツ 7 gpDe の 
WndowsCE で は この パラ メー タ は 無 祝 さ れ ま す 。NIL を 指定 し て くだ さい 。 


goCoZ7 の Ce で 指定 し た 動作 が 正常 に 終了 し た 場合 は 、TRUE が 返り ます 。 そ ね れ 以外 の 
場合 は EAISE が 返り ます 。 


17 


( 1 ) IGPTL BACIGTT GET STATE 


機 能 

バッ クラ イト の 点 灯 / 消 灯 情 報 を 取得 し ます 。 
パラ メー タ 

の 2 が 7 カ 


この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。NTIL を 指定 し て くだ さい 。 


の re77/ カ 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。0 を 指定 し て くだ さい 。 


の ング の // 
BACAIGT QNOFTF SETTITNG 構 造 体 を 含む バッ ファ の ポイ ンタ 。 
typedef struct tag BAJIGTT QYTFT SETTINT [ 


68『 72 び 7667 77 カ の 
DWRD 7 の ye7Y ら " 
) BACTIGTT QNFTE_SETTINJ 
の ⑦ び 7S567 77 7 カケ 
バッ クラ イト の 点灯 情報 を 返し ます 。 
TREE バッ クラ イト は 点灯 し て いる 
FALSE バッ クラ イト は 消灯 し て いる 
/ 宅 se7Y ら 


この フィ ー ル ド は 機能 拡張 の た め に 予約 され て お り 、0 を 返し ます 。 


の e72C が 
pg が OZ で 指定 し た バッ ファ の バイ ト 数 を 指定 し ます 。 


24C7 7g/ の 
pg が OZ で 指定 し た バッ ファ に 実際 に 返さ れ た デー タ の バイ ト 数 を 受け 取る DWORD 変数 の ポイ ンタ 。 


NEC Confidential 18 


( 2 ) IGPTL BACIGTT SET STATE 


機 能 
バッ クラ イト の 点灯 / 消 灯 を 設定 し ます 。 
本 体 の フタ が 閉じ た 状態 で バッ クラ イト の 点灯 を 設定 し て も 、 バ ッ ク ラ イト は 点 灯 し ませ ん 。 


パラ メー タ 

の 7 カ 
BACKIGTT ONYTFE_ SETTI NG 構造 体 を 含む バッ ファ の ポイ ンタ 。 
typedef struct tag BAJIGTT QYTFT SETTINT [ 


68『 72 び 7667 77 7 
DWRD 7 の ye7Y ら " 
) BACTIGTT QNFTE_SETTINJ 
⑦2 び 7567 77 7 
バッ クラ イト の 点 灯 消灯 を 指定 し ます 。 
TRE ノッ ツラ イド る 点灯 する 
FALSE バッ クラ イト を 消灯 する 
/ 宅 serY ら 


この フィ ー ル ド は 機能 拡張 の た め に 予約 され て お り 、0 を 指定 し ます 。 


要 e777 カ 
pg が 7 ヵ で 指定 し た バッ ファ の バイ ト 数 を 指定 し ます 。 


の が の Z 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。NLIL を 指定 し て くだ さい 。 


の 7 の Z 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。0 を 指定 し て くだ さい 。 


247 7g/ の 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。 NIL を 指定 し て くだ さい 。 


NEC Confidential 19 


(3 ) IQPITL BACAIGHTT GET STAIT2 


機 能 
バッ クラ イト の 輝度 レベ ル 情 報 を 取得 する 。 


パラ メー タ 
の 7 カ 
この ファ ンク ショ ン で は 、 


この パラ メー タ は 使用 し ませ ん 。 NIL を 指定 し て くだ さい 。 
の re777/7 カ 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。0 を 指定 し て くだ さい 。 


の が 
BACAIGTT LEVEL SETTT IN 構造 体 を 含む バッ ファ の ポイ ンタ 。 


typedef struct tag BAJIGI LEVEL SETTINT [ 
UN 777 757 7 
DOD serY ら : 

) BACTIGT LEVEL SETIINJ 


777 67257 7 ア 
バッ クラ イト の 輝度 レベ ル を 返し ます 。 
0 は バッ クラ イト 消灯 を 示す 。 


/ 宅 se7Y ら 
この フィ ー ル ド は 機能 拡張 の た め に 予約 され て お り 、0 を 返し ます 。 
67 の 
pg が OZ で 指定 し た バッ ファ の バイ ト 数 を 指定 し ます 。 


247 7g/ の 
pg が OZ で 指定 し た バッ ファ に 実際 に 返さ れ た デー タ の バイ ト 数 を 受け 取る DWORD 変数 の ポイ ンタ 。 


NEC Confidential 20 


( 4 ) IQPITL BACIGHTT SET STAIT2 


機 能 
バッ クラ イト の 輝度 レベ ル 1 て 7 の 輝度 変更 を 行い ます 。 

本 機能 は 、 バ パッ クラ イト 点灯 (輝度 レベ ル 1 7 ) 状態 で 実行 し て くだ さい 。 

訂 度 レベ ル 0 (バッ クラ イト 消灯 ) 状態 で 本 機能 を 実行 する と 、 前 回 点灯 時 の 輝度 レベ ル で 
点灯 する の み と な り 、 指 定 し た 輝度 レベ ル は 無視 され ます 。 


パラ メー タ 
の が 7 カ 
BACIGTT IFM SETIIN 構 造 体 を 含む バッ ファ の ポイ ンタ 。 
typedef struct tag BAJIGHT LEVE SETTINT [ 
UN 777 67577 
DD err 
) BAOTIGT LEVEL SETITINJ 


777 @727 7 ア 
バッ クラ イト の 輝度 レベ ル を 指定 し ます 。 
指定 で きる 輝度 レベ ル は 1 て 7 まで で す 。 
77es77 ア に 8( 以上 ) を 指定 し た 場合 : 輝度 レベ ル 7 に 設定 。 
777ezs77 ア に 0 を 指定 し た 場合 : 輝度 レベ ル の 設定 を せ ず に 処理 を 終了 。 


ye7Y ら 


この フィ ー ル ド は 機能 拡張 の た め に 予約 され て いま す 。0 を 指定 し て くだ さい 。 


本 訪 e77 7 
pg77 ヵ で 指定 し た バッ ファ の バイ ト 数 を 指定 し て くだ さい 。 


リク ラク の // 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。NLIL を 指定 し て くだ さい 。 


7 プ の 209 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。0 を 指定 し て くだ さい 。 


274c7 7g/ の 
この ファ ンク ショ ン で は 、 こ の パラ メー タ は 使用 し ませ ん 。NLIL を 指定 し て くだ さい 。 


NEC Confidential 21 


4. 1 . 5 コー ディ ング 例 
バッ クラ イト を 制御 する サン プル コー ド を 記載 し ます 。 以 下 の プ ログ ラム は 、Psvi cel oControl を 
使用 し て 、 バ ッ ク ラ イト の 輝度 を 変更 し て いま す 。 


震 nclude く <windows.h> 
震 nclude <BCKLIGHT.H>  // パッ クラ イト ドラ イ バ の ヘッ ダフ ァイル 


BOOL ChangeBacklightMode(int iChangeLevel) 

{ 
BOOL  bRet = FALSE: 
BOOL bRetDev: 
DWORD dwOutSize: 
BACKLIGHT_ONOFF_SETTING BacklightOnOff: 
BACKLIGHT_LEVEL SETTING BacklightLevel: 
HANDLE  hBcklight = NULL: 


// パッ クラ イト ドラ イ バ を オー プン 

hBcklight = CreateFile(L "BKL1:", 
GENERIC_READIGENERIC_WRITE, 
FILE_SHARE_READIFILE_SHARE_WRITE, 
NULL., 
OPEN_EXISTING, 
0, 
0): 


if (hBcklight == INVALID_HANDLE_VALUE) { 
return bRet: 


] 


// バッ クラ イト の 点灯 消灯 状態 を 取得 する 
bRetDev = DeviceloControl(hBcklight, 
IOCTL_BACKLIGHT_GET_STATE, 


NULL, 
0, 
(LPVOID)&BacklightOnOff, 
sizeof(BacklightOnOff), 
&dwOutSize, 
NULL): 
// 消灯 状態 の 場合 は バッ クラ イト を 点灯 する 
if (bRetDev) { 
if (BacklightOnOff.OnOffSetting) { 
BacklightOnOff.OnOffSetting = TRUE: 
bRetDev = DeviceloControl(hBcklight, 
IOCTL BACKLIGHT_SET_STATE, 
(LPVOID)&BacklightOnOff, 
sizeof(BacklightOnOff), 
NULL, 
0, 
NULL, 
NULL): 


( 次 ペー ジ へ ) 


NEC Confidential 22 


// バッ クラ イト の 輝度 を 設定 する 

if (bRetDev) { 
memset(&BacklightLevel 0, sizeof(BacklightLevel)): 
BacklightLevel.Intensity = iChangeLeve[: 
BacklightLevel.Reserve =0: 


bRetDev = DeviceloControl(hBcklight, 
IOCTL_BACKLIGHT_SET_STATE2, 
(LPVOID)&BacklightLevel, 
sizeof(BacklightLevel), 
NULL, 
0 


NULL, 
NULL): 


if (bRetDev) { 
bRet = TRUE: 
] 
] 


// パッ クラ イト ドラ イ バ を クロ ー ズ 
CloseHandle(hBcklight): 


return bRet: 


NEC Confidential 23 


5 . アプ リケーション 開発 用 の 参考 資料 


1 バッ テリ 状態 の 取得 
本 装置 の バッ テリ 状態 を 取得 する 場合 は 、 Get SystenPower St at us 区 2 関数 を 使用 し ます 。 


RE 条 CZZ Sys7 er77 の er g7 5/ 攻 グ ( 
FPSYSIHMPOWR SIATUOS BE2 - pyS7e77 の re7S7 g7 5/ ク 
DD の 7G72 
68『 ア /Z2g7 6 


): 


パラ メー タ Sys7 ez2 の eSf g/ dg/ 不 ク 
バッ テリ 状態 を 格納 する 構造 体 SYSTEMFOWWR STAIUS ES2 型 変数 の ポイ ンタ を 
指定 し ます 。 構造 体 SYSIEMFOWR STAXIUS ES2 の 詳細 を 以下 に 示し ます 。 


typedef struct _SYSIEMPOWR_STATUS_E2 { 
BYIE 477 eS7 g7 25 

BYIE 記 /7e7777 2 

BYIE 認 77g ア 7 76/ も 7Ce77: 

BYIE /serreg7 

DD 認 7 アア 7 ア 77 7 用 

DOD 認 7 gg ア 777 が 677 7 

BYIE / 故 serreo の 2 

BYIE 記 CZ の 認 7 の アア 7 gg 

BYIE 認め 故 7/7 の アプ 6/ や Ce67 が : 
BYIE /serreg? 

の CK の 7 77 ア 7677 7 婦 

の CK の 7 の の 7777 7677 7 
DD /7 gg ア 【 の 7 7 2gg 

DWORD 認 7 gg アル 7767 が : 

DOD /7 み アル 4 ルル e72geC77677: 
DCD /7 の アル 4 ルル 67.2g6/ 7 67 7 ・ 
DOD 記 7 gr 女 24 の 7C の 729777 の 
DWORD 記 /7 の ア 787pe727 77 ら 

DCRD 2Z の /7 の アル の 7 gg らら 

BYIE //7@ の ル 7e77 57 7 万 

) SYSIEM POWR STATUS ES ウ * PFSYSTEMPOWR_STATUS_E2 ウ * TPFSYSTEMPOWWR STATUS BE ウ : 


SYSIEMPOWR STATUS_ EE の 下記 メン バ は 固定 値 と な り ま す 。 

メン バ 値 

77 677 ア 7 ア 677 7 の BATTERY LIFE UNQOAN 
妃 77 の 7 ア 77 7 77 677 7 BATTFRY IIFE UNGOW 
c 太 の 認 77 の 7 アア 77 7e/ や 7Ce77 0 

CZ の の 77 の 7 ア 7 ア oe77 7g BATTERY LIFE UNQOAN 
CZ の 77 e77777 7 7/7 7677 7 の BATTERY LIFE UNQOAN 
77 アル の / 7 gge 0 

77 7 ア 77677 0 

77 の アル e7296C77 ア 67 0 

77 の アル 67.256777 @7r2/ 0 

77 er の 77C の 729777 の 0 


NEC Confidential 24 


77 の ア 7677 の 6727 77 ら 6 0 


太 の 認 /7 @ の アル の / 7 ggg 0 


また 、AO 接 続 状態 で バッ テリ 満 充 電 時 に は 、 以 下 の メ ン バ は 固定 値 と な り ま す 。 


メン バ 値 

7 の アグ gg BATTERY FTAG NO) BATTERY 

77 7 アプ 7e77 97 7 ア BATTERY CHFMSIRY UNO 
の re7 


Ss7 e77 の re7. ag7 gy 不 ク で 示さ れる バッ ファ の サイ ズ を バイト 単位 で 指定 し ます 。 


CZ2g7 e 
TRUE を 設定 する と 最新 の バッ テリ 状態 を 取得 し 、FALSE を 指定 する と キャ ッシュ に 


格納 され て いる 情報 を 取得 し ます 。 キ ャ ッシュ の 情報 は 現在 の 状態 か ら 数 秒 前 の 情報 に 
な り ま す 。 


戻り 値 バッ テリ 状態 を 正常 に 取得 し た 場合 は 0 以外 の 値 が 返り ます 。 そ れ 以 外 は 0 が 返り ます 。 


NEC Confidential 25 


【 コー ディ ング 例 】 

バッ テリ 情報 を 取得 する サン プル コー ド を 以下 に 記載 し ます 。 こ の コー ド で は 
Get Syst enowerStatusEx2 関数 を 実行 し 、 バ ッ テ リ 情報 を SYSTEMPOVWR_STATU5_B② 型 の 変数 
sysPoverStat usEx2 に 格納 し ます 。 ま た 、sysPover St atusEx2 の メン バ 変 数 か ら バッ テリ の 詳細 を 
メッ セー ジ ボ ポッ クス で 表示 し ます 。 


#include く windows.h> 


#define BATTERY_FLAG_HIGH 0x01 
#define BATTERY_FLAG_LOW 0x02 
#define BATTERY_FLAG_CRITICAL 0x04 
#define BATTERY_FLAG_CHARGING 0x08 
#define BATTERY_FLAG_NO_SYSTEM_BATTERY 0x80 


#define MAX_BUF_SIZE 256 


BOOL GetBatteryInfo(void) 

{ 
DWORD dwRtn: 
TCHAR szMsg[MAX_BUF_SIZE]: 
TCHAR szTmp[MAX_BUF_SIZE]: 
SYSTEM_POWER_STATUS_EX2 sysPowerStatusEx2: 
DWORD dwLength = sizeof(SYSTEM_POWER_STATUS EX2): 


// バッ テリ 情報 の 取得 
dwRtn = GetSystemPowerStatusEx2(&sysPowerStatusEx2, dwLength, TRUE): 
if (dwRtn) { 
// メッ セー ジ ボ ッ クス の 表示 内 容 作成 
// 稼動 状態 
*szMsg = TEXT('\07): 
switch (sysPowerStatusEx2.ACLineStatus) { 
case AC_LINE_OFFLINE: 
lstrcat(szMsg, TEXT(“ 稼 動 状態 : バッ テリ 稼動 状態 \n“)): 
break: 
case AC_LINE_ONLINE: 
lstrcat(szMsg, TEXT(“ 稼動 状態 : AC 電源 接続 状態 n)): 
break: 
case AC_LINE BACKUP_POWER: 
lstrcat(szMsg, TEXT(“ 稼動 状態 : バッ ソル アッ プ バッ テリ 稼動 状態 \n)): 
break: 
default: 
lstrcat(szMsg, TEXT(“ 稼 動 状態 : 不明 \n”)): 
break: 


( 次 ペー ジ へ ) 


NEC Confidential 26 


// バッ テリ 状態 

switch (sysPowerStatusEx2.BatteryFlag) { 

case BATTERY_FLAG_HIGH: 
lstrcat(szMsg, TEXT(“" バ ッ テ リ 状態 : High\n”)): 
break: 

case BATTERY_FLAG LOW: 
lstrcat(szMsg, TEXT(" バ ッ テ リ 状態 : Low\n?)): 
break: 

case BATTERY_FLAG_CRITICAL: 
lstrcat(szMsg, TEXT(“ バ ッ テ リ 状態 : Critical\n?)): 
break: 

case BATTERY_FLAG_CHARGING: 
lstrcat(szMsg, TEXT(“ バ ッ テ リ 状態 : Charging\n”)): 
break: 

case BATTERY_FLAG_NO_SYSTEM_BATTERY: 
lstrcat(szMsg, TEXT(“ バ ッ テ リ 状態 : No system battery\n”)): 
break: 

default: 
lstrcat(szMsg, TEXT(“ バ ッ テ リ 状態 : Unknown status\n”)): 
break: 

] 


// パッ テリ 残 量 
wsprintf(szTmp, TEXT(“ バ ッ テ リ 残 量 : %d %%\n), sysPowerStatusEx2.BatteryLifePercent): 
lstrcat(szMsg, szTmp): 


// バッ テリ 種別 

switch (sysPowerStatusEx2.BatteryChemistry) { 

case BATTERY_CHEMISTRY_ALKALINE: 
lstrcat(szMsg, TEXT(“ バ ッ テ リ 種別 : Alkaline\n”)): 
break: 

case BATTERY_CHEMISTRY_NICD: 
lstrcat(szMsg, TEXT(“ バ ッ テ リ 種別 : Nickel Cadmium\n”)): 
break: 

case BATTERY_CHEMISTRY_NIMH-: 
lstrcat(szMsg, TEXT(“ バ パッ テリ 種別 : Nickel Metal Hydride\n”)): 
break: 

case BATTERY_CHEMISTRY_LION: 
lstrcat(szMsg, TEXT(“ バ パッ テリ 種別 : Lithium on \n?)): 
break: 

case BATTERY_CHEMISTRY_LIPOLY: 
lstrcat(szMsg, TEXT(“ バ パッ テリ 種別 : Lithium Polymer\n”)): 
break: 

default: 
lstrcat(szMsg, TEXT(" バ ッ テ リ 種別 : 不明 \n”)): 
break: 

] 


// メッ セー ジ ボ ッ クス 表示 
MessageBox(NULL, szMsg, TEXT("GetBatteryInfo), MB_OK | MB_ICONINFORMATION): 
return TRUE: 


] 
return FALSE: 


NEC Confidential 27 


5 2 ジン トウ ツウ エアリ セッ ド 
ここ で は 本 装置 裏側 に ある リセ ッ ト スイ ッ チ を 押し た と き と 同 じ 動作 を 、 ア プリ ケー ショ ン か ら 行 う 
方 法 に つい て 説明 し ます 。 
アプ リケーション か ら ソ フト ウェ アリ セッ ト する 場合 、T/O ユ ント ロー ルコ ー ド に 1OCIL_HA_ REBOT を 
指定 し て KernelloControl 関数 を 実行 し ます 。 


区 条 , ore/ 7oC27Z7 の / ( 
DOD Or7 oOC の 7 7 の C の 5 の ら 
LPMVID 7 // 7 
DOD 7 7 万 が 57 26 
LPMVID 7pOZ 万 
DOD 707 婦 が 97 2 ら 


LPGD 7 は 7 es/ 宅 7 77726 の 


ラメ ー タ の roC の 7Z7 の / C の 26 
I/ 〇 コン トロール コー ド を 指定 し ます 。 本 装置 を ソフ トウ ェ ア リ セ ッ ト する 場合 、 
IOPIL FL REBOYT を 指定 し て くだ さい 。 


7//7 ラ が 
使用 し ませ ん 。NJL を 指定 し て くだ さい 。 
7 7 尽 が 9 Z@ 
使用 し ませ ん 。0 を 指定 し て くだ さい 。 
7 の 7 が 
この パラ メー タ は 無視 され ます 。NTL を 指定 し て くだ さい 。 
7 万 が 57 Z@ 
使用 し ませ ん 。0 を 指定 し て くだ さい 。 
7 7 es/ や 7 77772 の 
使用 し ませ ん 。NJIL を 指定 し て くだ さい 。 


戻り 値 正常 に 終了 し た 場合 、 値 は 返り ませ ん 。 そ われ 以外 の 場合 は FALSE が 返り ます 。 


【 コー ディ ング 例 】 
ソフ トウ ェ ア リ セ ッ ト を 行う サン プル コー ド を 以下 に 記載 し ます 。 SVWweset 関数 を コー ル す る 
KernelloControl 関数 実行 に より 本 装置 が リ セット され ます 。 


弁 include く windows.h> 
##Include く Pkfuncs.h> 


BOOL SWReset(void) 
{ 


return KernelloControl(IOCTL_ HAL_REBOOT, NULL, 0, NULL, 0, NULL): 


] 


NEC Confidential 28 


5 . 3 ハー ドウ ェ ア 国 体 識別 情報 (UUI D) の 取得 
ここ で は ハー ドウ ェ ア 固 体 識別 情報 ( UUI D ) の 取得 方 法 に つい て 説明 し ます 。 
プロ グラ ム か ら U り UI D を 取得 する 場合 、T/O コ ント ロー ルコ ー ド に IOJL_HAL GET_UJD を 指定 し て 
KernelloControl 関数 を 実行 し ます 。 


区 条 , re/ 7oC2777 の / ( 
DOD の 7 oO の 277 の C の 2 ら 
LPMID 7 //7 太 ア 
DOD 77 7 が 57 
LPMID 7 万 
DW7D 707 万 が 57 2 ら 


TPDXCD 7 の は 7 gs/ の 7 77722 の 


7 ラズ ピグ の 7oC の 277 7 の C の の 6 
I/O コ ント ロー ル コー ド を 指定 し ます 。ICCUIL HAL GET UID を 指定 し て くだ さい 。 
7 7 が 

使用 し ませ ん 。NJIL を 指定 し て くだ さい 。 
77/ 7 尽 が 9 2@ 
使用 し ませ ん 。0 を 指定 し て くだ さい 。 
7 の 7 が 

UID を 格納 する GTID 型 変数 の ポイ ンタ を 指定 し て くだ さい 。 
7 万 が 57 Z@ 

GTD 型 変数 の バイ ト 単位 の サイ ズ を 指定 し て くだ さい 。 
/ 7 es/ や 7 77772 の 
取得 し た デー タ の サイ ズ を 格納 する DORD 型 変数 の ポイ ンタ を 指定 し て くだ さい 。 


戻り 値 正常 に 終了 し た 場合 は TRE が 返り ます 。 そ われ 以外 の 場合 は FALSE が 返り ます 。 


NEC Confidential 29 


【 コー ディ ング 例 】 

UUI D 取得 を 行う サン プル コー ド を 以下 に 記載 し ます 。 Gt UJ D 関数 を コー ル す る と 
KernelloControl 関数 が 実行 され 、QGID 型 の ロー カル 変数 Gid に UUI D が 格納 され ます 。 
また 、 変 数 Gid の 内 容 を メッ セー ジ ボ ッ クス で 表示 し ます 。 


#include く windows.h> 
#include く Pkfuncs.h> 


#define MAX_BUF_SIZE 256 


void GetUUID(void) 

{ 
BOOL bRet: 
DWORD dwRetOutSize: 
GUID Guid: 


bRet = KernelloControl(IOCTL_HAL_GET_UUID, 
NULL, 
0, 
&Guid, 
sizeof(GUID), 
&dwRetOutSize): 


放 (bRet) { 

TCHAR szMsg[MAX_BUF_SIZE]: 

wsprintf(szMsg,TEXT("UUID = %08x-%04x-%04x-%02x%02x%02x%02x%02x%02x%02x%02x“), 
Guid.Data 1, 
Guid.Data2, 
Guid.Data3, 
Guid.Data4[0], 
Guid.Data4[1], 
Guid.Data4[2], 
Guid.Data4[3], 
Guid.Data4[4], 
Guid.Data4[5], 
Guid.Data4[6], 
Guid.Data4[7]): 

MessageBox(NULL, szMsg, TEXT("IOCTL_HAL_GET_UUID“), MB_OK): 


NEC Confidential 30 


5 . 4 指定 時 刻 に お ける アプ リケーション 起動 
ここ で は プロ グラ ム か ら 指定 し た 時 刻 に アプ リケーション を 起動 する 方 法 に つい て 説明 し ます 。 
プロ グラ ム か ら 指定 時 刻 に 任意 の アプ リケーション を 起動 する 場合 、CeSet User Notifi cationEx 関数 
を 使用 し ます 。 


HANTE C2567 (ger/W/7 が cg77 o7 放 ( 
HANTE 7V77 7 277 2 
CE NJTFEICAITONTRGER 導 
CE USER NOJTEICAXITQY Ce77 


): 


パラ メー タ 7V/77 が cg/7 7 
新しい 通知 を 作成 する 場合 は 0 を 指定 し 、 既 に 登録 され て いる 通知 を 変更 する 場合 は 、 


変更 する 通知 の ハン ド ル を 指定 し ます 。 


CC7 が 
どの イベ ント に よっ て 通知 を 発生 させ る か と いう 情報 を 格納 し た COCP NYIHICAITQN TRI GGR 


構造 体 へ の ポイ ンタ を 指定 し ます 。 構造 体 QR NIICXTONTRGGER の 詳細 を 以下 に 
示し ます 。 


typedef struct UserNotificatiorIrigger { 
DOD 2 2@ 
DORD 2 の: 
DOD 2 久 7 が / 
WAR 7 が 5 を 4 7 cg77 の 7 
WAR 7 クル gz77e777 5" 
SYSlHMIT ME s757 277 7 7 
SYSIEMIT MP 57777777 7 
) QNO1IfRICATQNTRGGER "RTRENYIHICATTONTRGRR 


指定 時 刻 に アプ リケーション を 起動 する 場合 は 、 以 下 の よ うに CE NITEICKIONTRGGER 


構造 体 変数 の メン バ 変 数 を 設定 し て くだ さい 。 


の ze CE NTFICKTONTRGEER 構 造 体 の サイ ズ を バイ ト 単位 で 
指定 し ます 。 

4722 通知 の タイ プ と し て QYL TIME を 指定 し ます 。 

72727/ 使用 し ませ ん 。0 を 指定 し て くだ さい 。 

7 ps を 42 の 7 cg77 の カ 起動 する アプ リケーション の 名 前 を 含む 、 ヌ ル 文 字 で 終わ る 
文字 列 へ の ポイ ンタ を 指定 し ます 。 

7 ps を 人 .g72 の 7 が y アプ リケーション を 起動 する た め の 、 ヌ ル 文 字 で 終わ る 
コマ ンド ライ ン を 持つ 文字 列 へ の ポイ ンタ を 指定 し ます 。 

s757g77 7 7 アプ リケーション の 起動 時 刻 を 指定 し て くだ さい 。 

s7 772777 7 の 使用 し ませ ん 。 

の CZ77 


使用 し ませ ん 。NTL を 指定 し て くだ さい 。 


NEC Confidential 31 


戻り 値 


成功 する と 通知 イベ ント に 対す る ハンド ル を 返し ます 。 失敗 し た 場合 に は NIL を 返し ます 。 


( 注意 ) 本 装置 の シス テム 負荷 が 高い 場合 、CeSet UserNotificationEx 関数 実行 後に シス テム 設定 


の 変 


【 コー ディ ング 例 】 


更 が 反映 され る まで 時 間 が か か る 場合 が あり ます 。 


指定 時 刻 に 起動 する アプ リケーション を 登録 する サン プル コー ド を 以下 に 記載 し ます 。 


lsRegi stAppAt Date 関数 で は 、| pszAppNane が 示す 文字 列 の アプ リケーション が lpSysTnStart が 示す 時 


刻 に 起動 する よう 登録 され て いる か 調べ ます 。 登録 済み で あれ ば 、 そ の 通知 の ハン ド ル が 
hNotifications に 格納 され 、 登 録 済み の 起動 時 刻 が SysTnStart に 格納 され ます 。 


また 、Set RunAppAt Date 関数 で は 、 | pszAppNane 


が 示す 文字 列 の アプ リケーション を IlpSysTnStart が 


示す 時 刻 に 起動 する よう 登録 、 ま た は 登録 済み の 通知 を 更新 し ます 。 lsRegi stAppAt Date 関数 実行 で 登録 


済み の 通知 と 判断 され た 場合 、 
規 登 録 し ます 。 


#include く windows.h> 
#include く Notify.h> 


BOOL IsRegistAppAtDate(HANDLE* IphNotifications, 
LPWSTR IpszAppName, 
DWORD dwType, 


hNotifications で 示さ れる 通知 を 


更新 し ます 。 登録 済み で な けれ ば 新 


SYSTEMTIME* IpSysTmStart): 
BOOL SetRunAppAtDate(HANDLE hNotifications, LPWSTR IpszAppName, SYSTEMTIME* IpSysTmStart): 


#define MAX_BUF_SIZE 256 
//【 使 用 例 】 

// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 


#define ONE_SEC_VALUE 
#define RUN_APP_NAME 
SYSTEMTIME SysTime: 


(10000000UL) 


// ロー カル 時 刻 の 取得 
GetLocalTime(&SysTime): 


// 現在 時 刻 の 1 分 後 の 時 刻 を 取得 


return -1: 


// function forward time 
// IN/OUT lpSysTime : pointer to SYSTEMTIME 
// IN dwFwdTime : forward time (nsec) 

// 


指定 時 刻 に よる アプ リケーション 起動 は 、 下 記 処 理 を 参考 に 行っ て くだ さい 。 
次 の 例 は 、 ア プリ ケー ショ ン 実 行 時 か ら 1 分 後に IE を 起動 する 処理 で す 。 
// 1sec = 10000000 * 100ns 


TEXT(“\\Windows\\iexplorer.exe ") 


if (IForwardTime(&SysTime, ONE_SEC_VALUE * 60)) 


RegistAppAtDate(NULL, RUN_APP_NAME, &SysTime): 


最大 値 Oxffffffffnsec(== 約 429sec) に 注意 


//BOOL ForwardTime(LPSYSTEMTIME IpSysTime, DWORD dwFwdTime) 


//{ 


( 次 ペー ジ へ ) 


NEC Confidential 


32 


// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
// 
//] 


// FILETIME 100ns unit , count from 1601.01.01 
FILETIME FileTime, FileTimeSave: 


(ISystemTimeToFileTime(lpSysTime, &FileTime)) 
return FALSE: 


FileTimeSave = FileTime: 

File Time.dwLowDate Time += dwFwdTime: 

放 (FileTime.dwLowDateTime く FileTimeSave.dwLowDateTime) 
File Time.dwHighDate Time++: 


(FileTimeToSystemTime(&FileTime,IpSysTime)) 
return FALSE: 


return TRUE: 


BOOL RegistAppAtDate(HWND hWnd, LPWSTR lpszAppName, SYSTEMTIME* IpSysTmStart) 


{ 


BOOL bRet = FALSE: 

HANDLE hNotifications = NULL: 
TCHAR szMsg[MAX_BUF_SIZE]: 
SYSTEMTIME SysTmStart: 


if (IpszAppName && IpSysTmStart) { 
// 既に アプ リケーション 起動 が 登録 済み か 調べ る 
if (lsRegistAppAtDate(&hNotifications, IpszAppName, CNT_TIME, &SysTmStart)) { 
wsprintf(szMsg, 
TEXT(“%s は 登録 済み で す 。 \n 起動 時 刻 : %04d/%02d/%02d %02d:%02d:%02d\n\n\ 


上 記 時 刻 を 変更 し ます か ?”), 


IpszAppName, SysTmStart.wYear, SysTmStart.wMonth, SysTmStart.wDay, 
SysTmStart.wHour, SysTmStart.wMinute, SysTmStart.wSecond): 
// “は い ” が タッ プ さ れ た ら lpSysTmStart の 日 付 に 起動 する よう 登録 を 更新 する 
if (IDYES == MessageBox(hWnd, szMsg, TEXT("Run App“), MB_YESNO | MB_ ICONQUESTION)) 【 
bRet = SetRunAppAtDate(hNotifications, IpszAppName, IpSysTmStarrt): 
] 
] 
// アプ リケーション 起動 が 登録 さ ヽ れ て いな けれ ば 新規 登録 する 
else { 
bRet = SetRunAppAtDate(NULL, IpszAppName, IpSysTmStart): 
] 
] 


// 登録 完了 メッ セー ジ 表 示 
if (bRet) { 
wsprintf(szMsg, TEXT(“%s を 登録 し まし た 。\n 起動 時 刻 : %04d/%02d/%02d %02d:%02d:%02d”) 
IpszAppName, IpSysTmStart->wYear, IpSysTmStart->wMonth, IpSysTmStart->wDay, 
IpSysTmStart->wHour, IpSysTmStart->wMinute, IpSysTmStart->wSecond): 
MessageBox(hWnd, szMsg, TEXT("Run App), MB_OK | MB ICONINFORMATION): 


] 
return TRUE: 


( 次 ペー ジ へ ) 


NEC Confidential 33 


BOOL IsRegistAppAtDate(HANDLE* IphNotifications, LPWSTR lpszAppName, DWORD dwType, SYSTEMTIME* 
IpSysTmStart) 
{ 

DWORD dwlndex: 

HANDLE* IprghNotifications = NULL: 

DWORD dwHandlesNum = 0: 

DWORD dwHandlesNeeded: 

DWORD dwBufferSize = 0: 

DWORD dwBytesNeeded: 

LPBYTE lpBuffer = NULL: 

PCE_NOTIFICATION_TRIGGER IpPceNotificationTrigger = NULL: 


// 必要 と な る ハン ドル 数 を 取得 
if (CeGetUserNotificationHandles(lprghNotifications, 0, &dwHandlesNeeded)) { 
if (dwHandlesNeeded > 0) { 
// ハン ドル 格納 用 の エリ ア を 確保 
IprghNotifications = (HANDLE*)LocalAlloc(LPTR, sizeof(HANDLE) * dwHandlesNeeded): 
(prghNotifications) { 
return FALSE: 
] 
dwHandlesNum = dwHandlesNeeded: 
// ハン ドル を 取得 
げ (CeGetUserNotificationHandles(lprghNotifications, dwHandlesNum, &dwHandlesNeeded)) { 
for (dwIndex = 0: dwindex く dwHandlesNeeded: dwIndex++) { 
// CeGetUserNotification の 第 2 パラ メー タ に 0 を 指定 し 、 
// 必要 な バッ ファ サイ ズ を 調べ る 
if (ICeGetUserNotification(IprghNotifications[dwIndex], 0, &dwBytesNeeded, IpBuffer)) { 
放 (dwBytesNeeded > 0) { 
dwBufferSize = dwBytesNeeded: 
IpBuffer = (LPBYTE)LocalAlloc(LPTR, dwBufferSize): 
if (IpBuffer) { 
LocalFree(lprghNotifications): 
IprghNotifications = NULL: 
return FALSE: 
] 
// 登録 され て いる 通知 の ハン ドル の 一 覧 を 取得 
if (CeGetUserNotification(lprghNotifications[dwIndex], 
dwBufferSize, &dwBytesNeeded, IpBuffer)) { 
LocalFree(lpBuffer): 
IpBuffer = NULL: 
LocalFree(lprghNotifications): 
IprghNotifications = NULL: 
return FALSE: 
] 


// ロー カル 変数 に CE_NOTIFICATION_TRIGGER 型 構造 体 変数 の ポイ ンタ 格納 
IpPceNotificationTrigger = 
((PCE_NOTIFICATION_INFO_HEADER)lpBuffer)->pcent: 


( 次 ペー ジ へ ) 


NEC Confidential 34 


// 時 間 に 基づい た 通知 で IpszAppName が 示す アプ リケーション が 登録 済み の 場合 
if (IpPceNotificationTrigger->dwType == dwType) { 
i 放 (lstrcmp(IlpPceNotificationTrigger->lpszApplication, IpszAppName) == 0) [ 
*IphNotifications = IprghNotifications[dwIndex]: 
*IpSysTmStart = IpPceNotificationTrigger->stStartTime: 
LocalFree(lpBuffer): 
IpBuffer = NULL: 
LocalFree(lprghNotifications): 
IprghNotifications = NULL: 
return TRUE: 
] 
] 
LocalFree(lpBuffer): 
IpBuffer = NULL: 


] 
] 
LocalFree(lprghNotifications): 


IprghNotifications = NULL: 


return FALSE: 


BOOL SetRunAppAtDate(HANDLE hNotifications, LPWSTR lpszAppName, SYSTEMTIME* IpSysTmStart) 
| 


CE_NOTIFICATION_TRIGGER NotificationTriggeri: 


if (IpszAppName && IpSysTmStart) { 
// CE_NOTIFICATION_TRIGGER 構造 体 変数 を 初期 化 
ZeroMemory(&NotificationTrigger, sizeof(CE_NOTIFICATION_TRIGGER)): 


// CE_NOTIFICATION_TRIGGER 構造 体 の メン バ 変 数 値 を 設定 
NotificationTrigger.dwSize = sizeof(NotificationTrigger): 
NotificationTrigger.dwType =CNT_TIME: 
NotificationTrigger.IpszApplication = (LPWSTR)lpszAppName: 
NotificationTrigger.stStartTime = *IpSysTmStart: 


// イベ ント を 新規 作成 
hNotifications = CeSetUserNotificationEx(hNotifications, &NotificationTrigger, NULL): 
if (nhNotifications) { 
return FALSE: 
] 


return TRUE: 


return FALSE: 


NEC Confidential 35 


5. 5 レジ ュー ム 時 の アプ リケーション 起動 
ここ で は 本 装置 の レジ ュー ム 時 に 任意 の アプ リケーション を 起動 する 方 法 に つい て 説明 し ます 。 
プロ グラ ム か ら レ ジュ ー ム 時 に 任意 の アプ リケーション を 起動 する 場合 、OeSet User NotificationEx 


関数 を 使用 し ます 。 


HANTE C2567 (ger/W/7 が cg77 o7 放 ( 
HANTE 7V77 7 277 2 
CE NJTFEICAITONTRGER 導 
CE USER NJTEICAITQY Ce77 


): 


パラ メー タ 万 W77 太 cg77 7 
新しい 通知 を 作成 する 場合 は 0 を 指定 し 、 既 に 登録 され て いる 通知 を 変更 する 場合 は 、 


変更 する 通知 の ハン ド ル を 指定 し ます 。 


CC7 が 
どの イベ ント に よっ て 通知 を 発生 させ る か と いう 情報 を 格納 し た CE NYCAITON TRIGGER 


構造 体 へ の ポイ ンタ を 指定 し ます 。 構造 体 QNOTRICAITONTR GEFR の 詳細 を 以下 に 
示し ます 。 


typedef struct UserNOtificationTrigger { 
DOD 2 2@ 
DWORD 2 の 2: 
DWORD 2 巡 77/ 
VTR _ 725 を 4 7 cg77 の 7 
WAR 7 クル g777e777 5" 
SYSIHMIT ME s757g77 7 7 の 
SYSIEMIT MP 57777777 7 
) QNO1fICATQNTRGGER "RTRENYIHICATTONTRGRR 


指定 時 刻 に アプ リケーション を 起動 する 場合 は 、 以 下 の よ うに CE NEICAIONTRGGER 
構造 体 変数 の メン バ 変 数 を 設定 し て くだ さい 。 


の Ze CE NIRICATONTRIGGER 構 造 体 の サイ ズ を バイ ト 単位 で 
指定 し ます 。 

の 祖 区 と 通知 の タイ プ と し て QNL EVEN を 指定 し ます 。 

7 の 7224 シス テム イベ ント の タイ プ を 指定 し ます 。 
NL FICAITQN EVEN WANKEUP を 指定 し て くだ さい 。 

7 ps42 の 7 cg77 の カ 起動 する アプ リケーション の 名 前 を 含む 、 ヌ ル 文 字 で 終わ る 
文字 列 へ の ポイ ンタ を 指定 し ます 。 

7 Os を 作 .g72 の 7 が 々 アプ リケーション を 起動 する た め の 、 ヌ ル 文 字 で 終わ る 
コマ ンド ライ ン を 持つ 文字 列 へ の ポイ ンタ を 指定 し ます 。 

sg77 7 7 使用 し ませ ん 。 

s7 772777 7 の 使用 し ませ ん 。 

の CZ77 


使用 し ませ ん 。NTIL を 指定 し て くだ さい 。 


NEC Confidential 36 


戻り 値 成功 する と 通知 イベ ント に 対す る ハン ドル を 返し ます 。 失敗 し た 場合 に は NIL を 返し ます 。 


( 注意 ) 本 装置 の シス テム 負荷 が 高い 場合 、QGeSet UserNotificationEx 関数 実行 後に シス テム 


の 変更 が 反映 さ れる ま で 時 間 が か か る 場合 が あ り ま 9 


【 コー ディ ング 例 】 


レジ ュー ム 時 に 起動 する アプ リケーション を 登録 する サン プル コー ド を 以下 に 記載 し ます 。 
lsRegi stAppAt ResuneEvent 関数 で は 、IpszAppNane が 示す 文字 列 の アプ リケーション が レジ ュー ム 時 に 


起動 する よう 登録 され て いる か 調べ ます 。 登録 済み で あれ ば 、 その 通知 の ハン ド ル が hNotifications に 


格納 され ま す 。 


また 、Set RunAppAt Resune 関数 で は 、 | pszAppNane が 示す 文字 列 の アプ リケーション を レジ ュー ム 時 に 
起動 する よう 登録 、 ま た は 登録 済み の 通知 を 更新 し ます 。lsRegi stAppAt ResuneEvent 関数 実行 で 登録 済 


み の 通 知 と 判断 され た 場合 、 hNotifications で 示さ れる 通知 を 更新 し ます 。 登録 済み で な けれ は 新規 


登録 し ます 。 


#include く windows.h> 
#Include く Notify.h> 


BOOL IsRegistAppAtResumeEvent(HANDLE* IphNotifications, LPWSTR IpszAppName, 
DWORD dwType, DWORD dwEvent): 
BOOL SetRunAppAtResume(HANDLE hNotifications, LPWSTR IpszAppName): 


#define MAX_BUF_SIZE 256 


BOOL RegistAppAtResumeEvent(HWND hWnd, LPWSTR IpszAppName) 
{ 

BOOL bRet = FALSE: 

HANDLE hNotifications = NULL: 

TCHAR szMsg[MAX_BUF_SIZE]: 


放 (IpszAppName) { 
// 既に アプ リケーション 起動 が 登録 済み か 調べ る 
(lsRegistAppAtResumeEvent(&hNotifications, IpszAppName, 
CNT_EVENT, NOTIFICATION_EVENT_WAKEUP)) { 
wsprintf(szMsg, TEXT(“%s は 登録 済み で す 。 \n 変更 し ます か ? ”), IpszAppName): 
// “は い " が タッ プ さ れ た ら レ ジュ ー ム 時 に 起動 する よう 登録 を 更新 する 


if (IDYES == MessageBox(hWnd, szMsg, TEXT("Run App), MB_YESNO | MB_ ICONQUESTION)) { 


bRet = SetRunAppAtResume(hNotifications, IpszAppName): 
] 
] 
// アプ リケーション 起動 が 登録 され て いな けれ ば 新規 登録 する 
else { 
bRet = SetRunAppAtResume(NULL, IpszAppName): 
] 


( 次 ペー ジ へ ) 


NEC Confidential 37 


// 登録 完了 メッ セー ジ 表 示 
if (bRet) { 
wsprintf(szMsg, TEXT(“%s を 登録 し まし た 。”), IpszAppName): 
MessageBox(hWnd, szMsg, TEXT("Run App”), MB_OK | MB ICONINFORMATION): 


1 
return TRUE: 


] 


BOOL IsRegistAppAtResumeEvent(HANDLE* IlphNotifications, LPWSTR IpszAppName, DWORD dwType, 
DWORD dwEvent) 
{ 

DWORD dwlndex: 

HANDLE* IprghNotifications = NULL: 

DWORD dwHandlesNum = 0: 

DWORD dwHandlesNeeded: 

DWORD dwBufferSize = 0: 

DWORD dwBytesNeeded: 

LPBYTE lpBuffer = NULL: 

PCE_NOTIFICATION_TRIGGER IpPceNotificationTrigger = NULL: 


// 必要 と な る ハン ドル 数 を 取得 
if (CeGetUserNotificationHandles(lprghNotifications, 0, &dwHandlesNeeded)) { 
if (dwHandlesNeeded > 0) { 
// ハン ドル 格納 用 の エリ ア を 確保 
IprghNotifications = (HANDLE*)LocalAlloc(LPTR, sizeof(HANDLE) * dwHandlesNeeded): 
i (prghNotifications) { 
return FALSE: 
] 
dwHandlesNum = dwHandlesNeeded: 
// ハン ドル を 取得 
放 (CeGetUserNotificationHandles(lprghNotifications, dwHandlesNum, &dwHandlesNeeded)) { 
for (dwIndex = 0: dwindex く dwHandlesNeeded: dwIndex++) { 
// CeGetUserNotification の 第 2 パラ メー タ に 0 を 指定 し 、 
// 必要 な バッ ファ サイ ズ を 調べ る 
if (ICeGetUserNotification(IprghNotifications[dwIndex], 0, &dwBytesNeeded, IpBuffer)) { 
放 (dwBytesNeeded > 0) { 
dwBufferSize = dwBytesNeeded: 
IpBuffer = (LPBYTE)LocalAlloc(LPTR, dwBufferSize): 
if (!pBuffer) { 
LocalFree(lprghNotifications): 
IprghNotifications = NULL: 
return FALSE: 
] 
// 登録 され て いる 通知 の ハン ドル の 一 覧 を 取得 
if(ICeGetUserNotification(IprghNotifications[dwIndex], 
dwBufferSize, &dwBytesNeeded, IpBuffer)) { 
LocalFree(lpBuffer): 
IpBuffer = NULL: 
LocalFree(lprghNotifications): 
IprghNotifications = NULL: 
return FALSE: 


( 次 ペー ジ へ ) 


NEC Confidential 38 


// ロー カル 変数 に CE_NOTIFICATION_TRIGGER 型 構造 体 変数 の ポイ ンタ 格納 
IpPceNotificationTrigger 
= ((PCE_NOTIFICATION_INFO_HEADER)lpBuffer)->pcent: 


// シス テム イベ ント 通知 で IpszAppName が 示す アプ リケーション が 登録 済み の 場合 
if (IpPceNotificationTrigger->dwType == dwType) { 
i (IpPceNotificationTrigger->dwEvent & dwEvent) { 
if (lstrcmp(lpPceNotificationTrigger->IpszApplication, IpszAppName) 


*IphNotifications = IprghNotifications[dwlIndexj]: 
LocalFree(lpBuffer): 

IpBuffer = NULL: 

LocalFree(lprghNotifications): 
IprghNotifications = NULL: 

return TRUE: 


] 
] 
LocalFree(lpBuffer): 
IpBuffer = NULL: 


] 
] 
LocalFree(lprghNotifications): 
IprghNotifications = NULL: 


] 
return FALSE: 
1 


BOOL SetRunAppAtResume(HANDLE hNotifications, LPWSTR IpszAppName) 
{ 


CE_NOTIFICATION_TRIGGER NotificationTriggeri: 
HANDLE hNotificationHandle: 


if (IpszAppName) { 
// CE_NOTIFICATION_TRIGGER 構造 体 変数 を 初期 化 
ZeroMemory(&NotificationTrigger, sizeof(CE_NOTIFICATION_TRIGGER)): 


// CE_NOTIFICATION_TRIGGER 構造 体 の メン バ 変 数 値 を 設定 
NotificationTrigger.dwSize = sizeof(NotificationTrigger): 
NotificationTrigger.dwType =CNT_EVENT: 
NotificationTrigger.dwEvent = NOTIFICATION_EVENT_WAKEUP: 
NotificationTrigger.IpszApplication = IpszAppName: 


// イベ ント を 新規 作成 
hNotificationHandle = CeSetUserNotificationEx(hNotifications, &NotificationTrigger, 0): 
if (hNotificationHandle == NULL) { 
return FALSE: 
] 
return TRUE: 
] 
return FALSE: 


NEC Confidential 39 


9 に 。 


6 アラ ー ム 通知 の 設定 


0 200 の の ee 


で は 、 指 定 開始 時 刻 か ら 指定 終了 時 刻ま で 以下 の 動作 を 行い ます 。 


アラ ー ム 通知 ラン プ の 点滅 
・ ア ラー ム 時 に 警告 音 を 鳴ら す 
アラ ー ム 通知 ダイ アロ グ ボッ クス の 表示 


( 注意 ) 本 装置 で は バイ ブレ ーション に よる アラ ー ム 通知 機能 は 含ま れ て お り ま せん 。 


プロ グラ ム か ら ア ラー ム 通 知 の 設定 を 行う 場合 、OeSet erNotificationEx 関数 を 使用 し て 指定 し た 
イベ ント 時 に アラ ー ム を 通知 する よう 登録 し ます 。 


HANTE C2567 (ger/W/7 が cg77 o7 放 ( 
HANTE 7V77 7 277 2 
NITEICAITONTRGER 必 Z, 
CE USER NOJTEICAITOY Ce77 


): 


パラ メー タ 7V/7 が cg/7 7 
新しい 通知 を 作成 する 場合 は 0 を 指定 し 、 既 に 登録 され て いる 通知 を 変更 する 場合 
変更 する 通知 の ハン ド ル を 指定 し ます 。 


あの 274 
どの イベ ント に よっ て 通知 を 発生 させ る か と いう 情報 を 格納 し た CE NATIHICAITON TRGGR 


構造 体 へ の ポイ ンタ を 指定 し ます 。 OE NJIHICXTONTRN GR 構造 体 の 詳細 を 以下 に 
示し ます 。 


typedef struct UserNOtificatiorIrigger 〔 
DOD 2 2@ 
DORD 2 の 2: 
DOD 2 太 e7 が / 
WAR 7 が 5 る 4 7 cg77 の 7 
WAR 7 クル rg777e777 5" 
SYSlHMIT ME s757g77 7 7 の 
SYSIEMIT MP 57777777 7 
) GE NO1RICATQONTRNGER “RE NYTHICATONTRG 刺 


アラ ー ム 通知 を 行う 場合 は 、 以 下 の よ うに QOE NIRICATON TRGGER 構造 体 変数 の 
メン バ 変 数 を 設定 し て くだ さい 。 


57 2@ CE NMIHICATONTRGGER 構 造 体 の サイ ズ を バイト 単位 で 指定 し ます 。 
gi が ZZe 通知 の タイ プ を 指定 し ます 。QNL PF ⑦ を 指定 し て くだ さい 。 
の び 太 ル e77 使用 し ませ ん 。0 を 指定 し て くだ さい 。 


7ps47cg77op | 使用 し ませ ん 。NJIIL. を 指定 し て くだ さい 。 

7 5 を ル g72 の 77 ? 使用 し ませ ん 。NTL を 指定 し て くだ さい 。 

アラ ー ム 通知 を 開始 する 時 刻 を 指定 し ます 。 み we に 
QNL PE の を 指定 し た 場合 に 必要 と な り ま す 。 


9797g77 7 7g 


NEC Confidential 40 


アラ ー ム 通知 を 終了 する 時 刻 を 指定 し ます 。 み 劉 ze に 
97 7/77777 7 の 
CN PER ⑦① を 指定 し た 場合 に 必要 と な り ま す 。 
の C6Z72 


通知 が 発生 し た と き に シス テム が どう 応答 すべ きか を 定義 し た OE USER NIICXITON 
構造 体 へ の ポイ ンタ を 指定 し ます 。OE USER NMIFICATON 構 造 体 の 詳細 を 以下 に 示し ます 。 


typedef struct UserNOtificationIype { 
DCD ルル 7 o777 ags 
TOHAR sz ガ g/ og7777@ 
TOHAR sz ガ g/ og78x7: 
TTAR sz5O2747 
DWORD 辺 x6O77Z 
DWORD eserre の 
) CE USER NTRICATQO "RE USER NOTRCATGN 


アラ ー ム 通知 を 行う 場合 は 、 以 下 の よ うに OE_USER NIRICATTN 構造 体 変数 の 
メン バ 変 数 を 設定 し て くだ さい 。 


ノル 7 o777 ags 通知 の イベ ント が 発生 し た と き に 行う 動作 を 指定 し ます 。 
以下 の 値 の 組み 合わ せ で 指定 し て くだ さい 。 

RINTLID アラ ー ム 通知 ラン プ を 点灯 させ ま す 。 
RN VERAIE | ※ 本 装置 で は サポ ー ト し て いま せん 。 
ユー ザー 通知 ダイ アロ グ ボッ クス を 


示し ま す 。 


pszSo727 に よっ て 指定 され た 音 を 
NO | 捕まり ます 、 


約 10 秒間 処理 を 繰返し ます 。 
PTNREPEAT | RINSOND と 共に 使用 し た 場合 に 


有効 で す 。 
psz ガ gog7777e| アラ ー ム 通知 ダイ アロ グ ボッ クス の タイ トル 文字 列 へ の ポイ ンタ を 
指定 し ます 。 
rsZ ガ g/ gg7ex7 | アラ ー ム 通知 ダイ アロ グ ボッ クス に 表示 する 文字 列 へ の ポイ ンタ を 
指定 し ます 。 
psZ5O7227 再生 する サウ ンド ファ イル の 名 前 を 含む バッ ファ へ の ポイ ンタ を 指定 


し ます 。 7 o777 ggs に PANSOND が 含ま れる 場合 に 有効 と な り ま す 。 


7/2xSOr72 の prg256227 の バッ ファ の 長 さ を 指定 し ます 。 
MX PAIH si zeof(TCTHR を 指定 し て くだ さい 。 
ryerre の 0 を 指定 し て くだ さい 。 


戻り 値 成功 する と 通知 イベ ント に 対す る ハン ドル を 返し ます 。 失敗 し た 場合 に は NIL を 返し ます 。 


( 注意 ) 本 装置 の シス テム 負荷 が 高い 場合 、CeSet UserNotificationEx 関数 実行 後に シス テム 設定 
の 変更 が 反映 さ れる まで 時 間 が か か る 場合 が あり まお.92 


NEC Confidential 41 


【 コー ディ ング 例 】 

アラ ー ム を 通知 する サン プル コー ド を 以下 に 記載 し ます 。 こ の コー ド で は SetAl arm 関数 を コー ル す る と 、 
pstSt artTine で 示さ れる 時 刻 か ら pstEndTi ne で 示さ れる 時 刻ま で 、 ア ラー ム 通 知 ラ ンプ の 点滅 、 

当 emp 玖 armwav ファ イル の 再生 、 ア ラー ム 通 知 ダ イア ログ ボッ クス の 表示 を 行い ます 。 


##include く windows.h> 
#nclude く Notify.h> 


BOOL SetAlarm(SYSTEMTIME* pstStartTime, SYSTEMTIME* pstEndTime) 
| 
TCHAR szSound[MAX_PATH]: 
CE_NOTIFICATION_TRIGGER NotificationTriggeri: 
CE_USER_NOTIFICATION UserNotification: 
HANDLE hNotificationHandle: 


lstrcpy(szSound, TEXT(“\\Temp\\Alarm.wav”)): 
ZeroMemory(&NotificationTrigger, sizeof(CE_NOTIFICATION_TRIGGER)): 


NotificationTrigger.dwSize = sizeof(NotificationTrigger): 
NotificationTrigger.dwType = CNT_PERIOD: 
NotificationTrigger.IpszApplication = NULL: 
NotificationTrigger.IpszArguments = NULL: 
NotificationTrigger.stStartTime = *pstStartTime: 
NotificationTrigger.stEndTime = *pstEndTime: 


ZeroMemory(&UserNotification, sizeof(CE_USER_NOTIFICATION)): 


UserNotification.ActionFlags = PUN_DIALOG | PUN_LED | PUN_SOUND | PUN_REPEAT: 
UserNotification.pwszDialogTitle = TEXT(“SetAlarm”): 

UserNotification.pwszDialogText =TEXT("Alarm Dialog”): 
UserNotification.nMaxSound = MAX_PATH * sizeof(TCHAR): 
UserNotification.pwszSound = szSound: 


// イベ ント を 新規 作成 
hNotificationHandle = CeSetUserNotificationEx(0, &NotificationTrigger, &UserNotification): 
if (hNotificationHandle == NULL) { 
return FALSE: 
] 


return TRUE: 


NEC Confidential 42 


5 . 7 ショ ー ト カッ ト の 作成 


ここ で は プロ グラ ム か ら シ ョ ー ト カッ ト を 作成 する 方 法 に つい て 説明 し ます 。 


プロ グラ ム か ら シ ョ ー ト カッ ト を 作成 する 場合 、SHT eat eShortcut 関数 を 使用 し ます 。 
E 条 , S7 ナ eg7 eS7o77CZ ( 
LPISIR szgSZ277 CZ が, 
LPISIR sz7 妨 ge7 


パラ メー タ s を 57277 CZ 
ー ト カッ ト ファ イル 名 ( フル バス) の 文字 列 へ の ポイ ンタ を 指定 し ます 。 


ショ 


5 グ 7g7' ら 67 
対象 と な る 実行 ファ イル 名 ( フル パス ) の 文字 列 へ の ポイ ンタ を 指定 し ます 。 


戻り 値 正常 に 終了 し た 場合 は TRE が 返り ます 。 そ れ 以 外 の 場合 は FALSE が 返り ます 。 


し コー ディ ング 

ショ ー ト カッ ト 作成 の サン プル コー ド を 以下 に 記載 し ます 。 こ の コー ド で は GetMdul eFi leNene 関数 
で szAppNsne に サン プル の 実行 ファ イル 名 を 取得 し ます 。 次 に SHTeateShortcut 関数 で szShortcut 
で 表 さ れる 名 前 で デス クト ッ プ に ショ ー ト カッ ト を 作成 し ます 。 また 、 SHst ShortcutTarget 関数 で ショ 


ェ 実 行 フ ァイル 名 を szTarget に 格納 し 、 メ ッ セ ー ジ ボッ クス で 表示 し ます 。 


ー ト カッ ト の リン クタ 


#include く windows.h> 
お nclude く Shellapi.h> 


#define LINK_FILE_NAME TEXT("Appname.Ink“) 


BOOL IsExsistSpacelnStr(LPCWSTR lpszStr): 


int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPWSTR IpCmdLine, int nWinMode) 


{ 
TCHAR szAppName[MAX_PATH]: 


TCHAR szShortcut[MAX_PATH]: 
TCHAR szExeName[MAX_PATH]: 
TCHAR szTarget[MAX_PATH]: 


// 実行 アイ ル 名 を 取得 
GetModuleFileName(hThisInst szAppName, MAX_PATH): 


// デス クト ッ プ フォ ル ダ を 取得 
i 放 (!SHGetSpecialFolderPath(NULL, szShortcut, CSIDL_DESKTOP, FALSE)) 


return FALSE: 
lstrcat(szShortcut, TEXT(“\\”) LINK_FILE_NAME): 


// if exisit space then set double quotation 

放 (lsExsistSpacelnStr(szAppName)) 【 
lstrcpy(szExeName, TEXT(“\“⑦): 
lstrcat(szExeName, szAppName): 
lstrcat(szExeName, TEXT("\“)): 


( 次 ペー ジ へ ) 


NEC Confidential 43 


else [ 
lstrcpy(szExeName, szAppName): 
] 
(SHCreateShortcut(szShortcut, szExeName)) 
MessageBox(NULL, TEXT(“ デ スク トッ プ に ショ ー ト カッ ト を 作成 し まし た ), TEXT(“Appname“), MB_OK): 


// 作成 し た ショ ー ト カッ ト フ ァイル か ら 、 リン ケ 先 の 実行 フフ イル 名 を 取得 する 
放 (SHGetShortcutTarget(szShortcut, szTarget, sizeof(szTarget))) 

MessageBox(NULL szTarget, TEXT(“Appname), MB_OK): 
return 0: 


] 


// IpszStr が 示す 文字 列 の 中 に スペ ー ス が 含ま れる か 調べ る 
// この 関数 は Unicode( ワ イド 文字 ) 専用 で す 。 そ れ 以 外 の 文字 (SJIS 等 ) で 使用 する 場合 、lsDBCSLeadByte 関数 等 で 


// マル チバ イト 文字 の 先頭 バイ トチ ェ ッ ク が 必要 と な り ま す 。 
BOOL IsExsistSpacelnStr(LPCWSTR lpszStr) 
{ 

BOOL bRet = FALSE: 


for( : *lpszStr: IpszStr++)[ 
ilpszStr ==_T( ) 人 
bRet = TRUE: 
break: 
] 


return bRet: 


( 注意 ) 既に 作成 し よう と し て いる ショ ー ト カッ ト ファ イル 名 ( フル バス ) と 同一 名 称 の ショ ー ト カッ ト 
ファ イル 名 ( フル バス) が 存在 する 場合 、SHT eat eShortcut 関数 は 失敗 し ます 。 


NEC Confidential 44 


ーー 
ーー 


こ で は プロ グラ ム か ら ハ ー ド アイ コン で 起動 する アプ リケーション の 変更 方 法 に つい て 説明 し ます 。 
本 装置 の ハー ド アイ コン を 以下 に 示し ます 。 


O @ 
② ⑦ 
(9 
④ ⑨ 
@ 


⑥ ~ ⑦( 右側 の ハー ド アイ コン ) で 起動 する アプ リケーション は 、【 拡張 機能 の 設定 プロ パテ ィ 】 画 面 
で 変更 可能 で す 。 ① ~ ⑥( 左側 の ハー ド アイ コン ) で 起動 する アプ リケーション は 、 レ ジス トリ の 値 を 
変更 する こと に よっ て の み 変 更 可 能 で す 。 


① て ⑩ の ハー ド アイ コン で 起動 する アプ リケーション は 、 レ ジス トリ で 管理 され て いま す 。 
以下 に ハー ド アイ コン 用 の レジ スト リ 項目 と 設定 値 の 詳細 を 記載 し ます 。 


レジ スト リ 項 目 デフ ォ ル ト 値 

① |HKEY_LOCAL_MACHINE\Software\NEC\Touch Panel F6 了 の 5 。 の 
\\windows\\pmail.exe 

② | HKEY_LOCALMACHINE\SoftwareWNEC\Touch Panel り ^\"\\Program Files\\Browser\\picselbrowser.exe\"“ 

③ |HKEY_LOCAL_MACHINE\Software\NEC\Touch Panel F8 の と 防 
\\windows\\ceplayer.exe 

《④ |HKEY_LOCAL_MACHINE\Software\NEC\Touch Panel F9 の の 
Windows\\catmenu.exe 

HKEY_LOCAL_MACHINE\Soft \NEC\Touch Panel F10 |/ 。 の 

⑤ - 人 RS 1 \\Windows\\ お 気に入り \\M-stage.Ink 

⑥ |HKEY_LOCAL_MACHINE\Software\NEC\Touch Panel F1 の 5 2 
\\Windows\\iexplorer.exe 

⑦ |HKEY_LOCAL_MACHINE\Software\NEC\Touch Panel F2 了 の 
\\Windows\\msmsgs.exe 

HKEY_LOCAL_MACHINE\Software\NEC\Touch Panel F3 6 BWSECGE2 に の っ 7 

⑨ |HKEY_LOCAL_MACHINE\Software\NEC\Touch Panel F4 25NBMSSEISI3BRSBS 

HKEY_LOCAL_ MACHINE\Software\NEC\Touch Panel F5 2MWindowsWWgstartexe” 


NEC Confidential 45 


【 コー ディ ング 例 】 
ハー ド アイ コン で 起動 する アプ リケーション を 変更 する サン プル コー ド を 以下 に 記載 し ます 。 
この コー ド で は 左上 隅 に ある ハー ド アイ コン を タッ プ す る と 、 コ ント ロー ル パ ネ ル が 起動 する よう 


変更 し ます 。 レ ジス トリ の 値 設 定 は 、 RegQeatekeyEx 関数 で レジ スト リキ ー を オー プン 後 、 
RegSet Val ueEx 関数 で 設定 し ます 。 


#include く windows.h> 


#define SUB_KEY_TOUCH_PANEL TEXT(“Software\\NEC\\Touch Panel\\F6”) 
#define ENTRY_NAME_HARD_ICON TEXT(“Default ”) 
#define SET KEY VALUE TEXT(“\"\\Windows\\control.exe\“) 


BOOL SetHardIconApp(void) 

{ 
BOOL bRet = FALSE: 
LONG IResult: 
HKEY  hKeyResult = NULL: 
DWORD dwDisposition = 0: 


// レジ スト リキ ー を 開く 

IResult = RegCreateKeyEx( 
HKEY_LOCAL_ MACHINE, 
SUB_KEY_TOUCH_PANEL, 
0, 
NULL, 
REG_OPTION_NON_VOLATILE, 
KEY_WRITE, 
NULL, 
&hKeyResult, 
&dwDisposition): 


ぜ (IResult == ERROR_SUCCESS) 1 

// 起動 アプ リケーション 変更 

IResult = RegSetValueEx( 
hKeyResult, 
ENTRY_NAME_HARD_ICON, 
0, 
REG_SZ, 
(const BYTE*)SET_KEY_VALUE, 
(lstrlen(SET_KEY_VALUE) + 1) * 2 
): 

放 (IResult == ERROR_SUCCESS) { 

bRet = TRUE: 
] 


// レジ スト リキ ー の クロ ー ズ 
RegCloseKey(hKeyResult): 


return bRet: 


NEC Confidential 46 


5. 9 ダイ アル アッ プ ネ ットワーク の 接続 、 切 断 方 法 
本 装置 の ダイ アル アッ プ ネ ットワーク 接続 、 切断 を アプ リケーション か ら 行 う 方 法 に つい て 説明 し ます 。 


【 コー ディ ング 例 】 


ダイ アル アッ プ ネ ットワーク 接続 お よび 切断 を 行う サン プル コー ド を 以下 ( 


こ 記載 し ます 。 


QpenRasConnecti on 関数 で は 、 RasEnuntntries 関数 に より lpszEntryNsne が 示す 文字 列 の エン トリ 名 
の 接続 が 登録 済み で ある か を 調べ ます 。 登録 済み で あれ ば 、 ユ ー ザ I D =| pszuUserNsne が 示す 文字 列 、 
パス ワー ド =| pszPassword が 示す 文字 列 、 ド メイ ン 名 =| pszDonamin が 示す 文字 列 で ダイ アル アッ プ ネ ッ 


トワ ー ク 接続 し ます 。 ダ イア ル ア ッ プ ネ ットワーク 接続 に は RasDal 関数 を 使 有 


し ます 。 


d oseRasConnecti on 関数 で は 、 RasHgngLb 関数 で ダイ アル アッ プ ネ ットワーク 接続 を 切断 し ます 。 


また 、RasGet Connect St atus 関数 で 接続 状態 を 取得 し 、 接続 が 完全 に 切断 され る まで 処 下 


に し て いま す 。 


#include く windows.h> 
#include く Ras.h> 
##include く raserror.h> 


#define MAX_BUF_SIZE 256 


//【 使 用 例 】 


// HARASCONN hRasConn = NULL: 
// ダイ アル アッ プ ネ ットワーク 接続 
// OpenRasConnection(&hRasConn, TEXT(“"entry), TEXT("user), TEXT("passwd”), TEXT(“domain”)): 


// 
// 
// * 
// 接続 切断 


// CloseRasConnection(hRasConn): 


// 


得 ら れ た 接続 ハン ドル を 指定 する 。 


BOOL OpenRasConnection(HRASCONN* IphRasConn, 


DWORD 
DWORD 
DWORD 
DWORD 
DWORD 


LPCTSTR lpszEntryName, 
LPCTSTR lpszUserName, 
LPCTSTR lpszPassword, 

LPCTSTR lpszDomain) 


dwIndex: 

dwRet: 

dwNeededSize: 

dwEntryNum = 0: 

dwEntrySize = sizeof(RASENTRYNAME): 


LPRASENTRYNAME lpRasEntryName = NULL: 
RASDIALPARAMS RasDialParams: 


( 次 ペー ジ へ ) 


NEC Confidential 


47 


ほ を 抜け な いよ う 


<- 第 1 パラ メー タ に OpenRasConnect 関数 で 


if (IpszEntryName) { 
while (pRasEntryName) { 
// エリ ア 確 保 
IpRasEntryName = (LPRASENTRYNAME)LocalAlloc(LPTR, (UINT)dwEntrySize): 
(IpRasEntryName) 【 
// RAS の 電話 帳 エ ント リ を 取得 
IpRasEntryName->dwSize = sizeof(RASENTRYNAME): 
dwNeededSize = dwEntrySize: 
if (dwRet = RasEnumEntries(NULL, NULL, IpRasEntryName, &dwNeededSize, &dwEntryNum)) { 
// 正常 終了 時 は Loop を 抜け る 
if (dwRet == 0) { 
break: 
] 
// エリ ア 不 足 時 は リト ライ 
else if (dwRet == ERROR_BUFFER_TOO_SMALL) { 
dwEntrySize = dwNeededSize: 
LocalFree(lpRasEntryName): 
IpRasEntryName = NULL: 
] 
// エラ ー 発 生 時 
else { 
LocalFree(lpRasEntryName): 
IpRasEntryName = NULL: 
return FALSE: 


// IpszEntryName と 同じ エン トリ 名 を 検索 する 
for (dwIndex = 0: dwIndex く dwEntryNum: dwIndex++) { 
(0 == lstrcmp(lpRasEntryName[dwIndex].szEntryName, IpszEntryName)) { 
break: 


] 
] 
// lpszEntryName と 同じ エン トリ 名 が 見 つか ら な い 場 合 は エラ ー 
if (dwIndex == dwEntryNum) { 
LocalFree(lpRasEntryName): 
IpRasEntryName = NULL: 
return FALSE: 
] 


// RASDIALPARAMS 構造 体 変数 の 初期 化 
memset(&RasDialParams, 0, sizeof(RASDIALPARAMS)): 


( 次 ペー ジ へ ) 


NEC Confidential 48 


// RASDIALPARAMS 構造 体 変数 の メン バ 変 数 値 設定 
RasDialParams.dwSize = sizeof(RASDIALPARAMS): 
RasDialParams.szPhoneNumber[0] = TEXT(\07): 
RasDialParams.szCallbackNumber[0] = TEXTC\0): 


wcscpy(RasDialParams.szEntryName, IpRasEntryName[dwIndex].szEntryName): // エン トリ 名 
LocalFree(lpRasEntryName): 
IpRasEntryName = NULL: 


if (IpszUserName) 

wcscpy(RasDialParams.szUserName, IpszUserName): 
if (IpszPassword) 

wcscpy(RasDialParams.szUserName, IpszPassword): 
if (IpszDomain) 

wcscpy(RasDialParams.szUserName, IpszDomain): 


// RAS を 用 いて 接続 を 確立 する 

dwRet = RasDial(NULL, // Extension not supported 
NULL, // Phone book is in registry 
&RasDialParams, // RAS configuration for connection 
0xFFFFFFFF, // Notifier type is a window handle 
NULL, // Window receives notification message 


lphRasConn): // 接続 ハン ドル を 受け 取る 変数 


// リモ ー ト アク セス 接続 で き な か っ た 場合 は エラ ー 表 示 
if (dwRet == 0) { 
// リモ ー ト アク セス 接続 の 完了 メッ セー ジ 表 示 
MessageBox(NULL, TEXT(" ダイアルアップ 接続 を 完了 し まし た 。”), TEXT(“DialUp“), MB_OK | 
MB_ICONINFORMATION): 
return TRUE: 


] 
] 
return FALSE: 


( 次 ペー ジ へ ) 


NEC Confidential 49 


BOOL CloseRasConnection(HRASCONN hRasConn) 
{ 
RASCONNSTATUS RasConSts: 


// 全て の 接続 を 切断 する 場合 は 、RasEnumConnections で 接続 中 の ハン ドル を 
// 取得 後 、 そ れ ぞ れ の ハン ドル で RasHangUp 実行 し て くだ さい 。 

//RASCONN RasCon: 

//DWORD dwRasSize: 

//DWORD dwConnections: 

//dwRasSize = RasCon.dwSize = sizeof(RASCONN): 
//RasEnumConnections(&RasCon, &dwRasSize, &dwConnections): 


// リモ ー ト アク セス 接続 を 切断 する 
if (hRasConn) { 
RasHangUp(hRasConn): 


// リモ ー ト アク セス 接続 が 切断 され る まで 待つ 

RasConSts.dwSize = sizeof(RASCONNSTATUS): 

while (RasGetConnectStatus(hRasConn, &RasConSts) に ERROR_INVALID_HANDLE) { 
Sleep(0): 


] 
// リモ ー ト アク セス 接続 の 切断 メッ セー ジ 表 示 
MessageBox(NULL, TEXT(" ダイアルアップ 接続 を 切断 し まし た 。”), TEXTC“DialUp), MB_OK | 
MB_ICONINFORMATION): 
] 


return TRUE: 


NEC Confidential 50 


9 。 


1 0 フォ ント 変更 


本 装置 で は 【 フォ ント サイ ズ 設 定 】 画 面 で 変更 可能 な が フォ ント を アプ リケーション か ら 変 1 


( 下記 項目 ) 


> ジス デム オン ト 


居所 ュー パー テ ォ マッ ト 


NR ウブ リウ アス ニョ ュー フサ ント 
・ InternetExploler の フォ ント 


・ ヘル プ の フォ ント 


>・ ワー ド バ ッ ト の デラ オル ト フォ ント 
・ WindowsM essenger の フォ ント 


上 記 の フォ ント 設定 は レジ スト リ で 管 民 
に は 、 該 当 す る レジ スト リ 項 


まき れれ て お り 、 ア プリ ケー ショ ン か ら フ ォ ン ト を 変 
目 値 を 設定 し た の ち ソ フト ウェ アリ セッ ト する こと で 行い ます 。 


更 する 場合 


中 


ロ 


以下 加 フォ ント サイ ズ 設 定 】 画 面 で 変更 可能 な フォ ント の レジ スト リ 項目 と 設定 値 の 詳細 を 
氏 シ ステ ム フ ォ ント 
設定 値 
レジ スト リ 1』 
唱 本 大 最大 
上 -12 13 13 
HKEY_LOCAL_MACHINE\System (フォ ント サイ スズ /DWORD) 
\GDI\SYSFNT Wt 190 21f 275 
(2 ルト の 厚み /DWORD) 
財 -12 13 13 
HKEY_LOCAL_MACHINE\System (フォ ント サイ ス /DWORD) 
\GWE\OOMFnt Wt 190 21f 275 
(フォ ント の 厚み /DWORD) 
倫 メ ニュ ー バ ー フ ォ オォ ント 
還 設定 値 
レジ スト リ 項 目 器 
標準 大 最大 
HKEY_LOCAL_MACHINE\System BarTMrg 2 0 0 
\GWEYMenu (トリ ミン グ /DWORD) 
呈 -12 13 13 
HKEY_LOCAL_MACHINE\System (フォ ント サイ ス /DWORD) 
\GWE\Menu\BarFnt Wt 190 21f 275 
(フォ ント の 厚み /DWORD) 
@ ポ ッ プ アッ プ メ ニュ ー フ ォ ン ト 
設定 値 
レジ スト リ 1』 
順 目 標 大 最大 
員 -12 13 13 
HKEY_LOCAL_MACHINE\System (フト サイ ズ /DWORD) 
\GWE\Menu\PopFnt Wt 190 21f 275 
(2 ルト の 厚み /DWORD) 
人 @InternetExplorer の フォ ント 
呈 設定 値 
レジ スト リ 1 8 上 
ci 標準 大 最大 
HKEY_CURRENT_USER IEFontSize 
\Software\Microsoft\Internet Explorer QE の フォ ト サ イ ズ 設定 / パ 作り の : | 02 00 00 00| 03 00090 00| o4 00 00 00 


\International\Scripts\24 


NEC Confidential 


1 6 


載 し ます 。 


⑱ ヘ ルプ の フォ ント 


設定 値 
レジ スト リ 項 目 5 本 
標準 大 最大 
HKEY_CURRENT_USER ZoomSetting 
\Software\Microsoft\HELP (HELP の フォ ント サイ ス ' 設 定 00000002 00000003 00000004 
/DWORD): 
@⑯ ワ ー ド バッ ト の デフ ォ オルトフォン ト 
上 設定 値 
レジ スト リ 項 目 = ー 
標 大 最大 
HKEY_LOCAL_MACHINE Dy 
\SOFTWARE\Microsoft (リー ド バ ハット "の デフ ォ ルト フォ ント サイ スズ ~ 000000C8 000000DC 000000F0 
\Pocket Word\pwdDefaultFont の 設定 /DWORD) 
@WindowsMessenger の フォ ント 
> 設定 値 
レジ スト リ 項 目 - ー ー 
標 大 最大 
HKEY_CURRENT_USER IM Text Size 
\Software\Microsoft\MessengerService (WindowsMessenger の フォ ント サ | 02 00 0000| 03000000| 04000000 


イズ 設定 全 り ): 


( 注意 ) フォ ント サイ ズ を 大 きく し すぎ る と 文字 が 重なり 合い 、 画 面 が 見 づら く な る 場合 が あり ます 。 


NEC Confidential 


52 


【 コー ディ ング 例 】 

シス テム フォ ント を 変更 する サン プル コー ド を 以下 に 記載 し ます 。 こ の コー ド で は SetSysFont Si ze 
関数 の 引数 dwFont Si ze, dwFontVei ght の 値 で シス テム フォ ント の サイ ズ と 厚み を 変更 し ます 。 
レジ スト リ の 値 設 定 は 、 RegQreat eKeyEx 関数 で レジ スト リキ ー を オー プン 後 、 RegSetVal ueEx 関数 で 
設定 し ます 。 

また 、 こ の サン プル コー ド 実行 後に 本 装置 裏側 に ある リセ ッ ト スイ ツチ を 押し て 再起 動 す る と 、 シス テ 
ム フ ォ ント の 変更 が 反映 され ます 。 


#include く windows.h> 


#define SUB_KEY_SYS FONT TEXT("System\\GDI\\SYSFNT”) 
#define SUB_KEY_OOM_FONT TEXTCSystem\\GDI\\OOMFnt”) 
#define ENTRY_NAME_SIZE TEXTCHt”) 

#define ENTRY_NAME_WEIGHT TEXT(“Wt") 


BOOL SetSysFontSize(DWORD dwFontSize, DWORD dwFontWeight) 
{ 

LONG IResult: 

HKEY  hKeyResult = NULL: 

DWORD dwDisposition = 0: 


// レジ スト リキ ー を 開く 

IResult = RegCreateKeyEx( 
HKEY_LOCAL_ MACHINE, 
SUB_KEY_SYS_ FONT, 
0, 
NULL, 
REG_OPTION_NON_VOLATILE, 
KEY_WRITE, 
NULL, 
&hKeyResult, 
&dwDisposition): 

(IResult に ERROR_SUCCESS) { 

return FALSE: 
] 


// フォ ント サイ ズ 設 定 

IResult = RegSetValueEx( 
hKeyResult, 
ENTRY_NAME_SIZE, 


0, 
REG_DWORD, 
(const BYTE*)&dwFontSize, 
sizeof(DWORD) 
) 
放 (IResult に ERROR_SUCCESS) { 
RegCloseKey(hKeyResult): 
return FALSE: 


( 次 ペー ジ へ ) 


NEC Confidential 53 


// フォ ント の 厚み 設定 
IResult = RegSetValueEx( 
hKeyResult, 
ENTRY_NAME_WEIGHT, 
0, 
REG_DWORD, 
(const BYTE*)&dwFontWeight, 
sizeof(DWORD) 
): 
ぜ (IResult に ERROR_SUCCESS) { 
RegCloseKey(hKeyResult): 
return FALSE: 
] 


// レジ スト リキ ー の クロ ー ズ 
RegCloseKey(hKeyResult): 


// レジ スト リキ ー を 開く 

IResult = RegCreateKeyEx( 
HKEY_LOCAL_ MACHINE, 
SUB_KEY_OOM_FONT, 
0, 
NULL, 
REG_OPTION_NON_VOLATILE, 
KEY _WRITE, 
NULL, 
&hKeyResult, 
&dwDisposition): 

(IResult に ERROR_SUCCESS) { 

return FALSE: 
] 


// フォ ント サイ ズ 設 定 
IResult = RegSetValueEx( 
hKeyResult, 
ENTRY_NAME_SIZE, 
0, 
REG_DWORD, 
(const BYTE*)&dwFontSize, 
sizeof(DWORD) 
) 
放 (IResult に ERROR_SUCCESS) { 
RegCloseKey(hKeyResult): 
return FALSE: 
] 
// フォ ント の 厚み 設定 
IResult = RegSetValueEx( 
hKeyResult, 
ENTRY_NAME_WEIGHT, 
0, 
REG_DWORD, 
(const BYTE*)&dwFontWeight, 
sizeof(DWORD) 
): 
ぜ (IResult に ERROR_SUCCESS) { 
RegCloseKey(hKeyResult): 
return FALSE: 


( 次 ペー ジ へ ) 


NEC Confidential 54 


// レジ スト リキ ー の クロ ー ズ 
RegCloseKey(hKeyResult): 


return TRUE: 


NEC Confidential 55 


参考 . 搭載 機能 一 覧 


VWndovs CGC.NET 4 1 が 標準 で 用 意 し て いる 機能 の うち 、signmrionIII で 搭載 し た 機能 の 概要 を 記 


この 機能 一 覧 は signmrionIII# 


了 肖 し ます 。 


製作 時 に 選択 し た 機能 の 概要 を 示し て いる も の で あり 、 全 て の 動作 を 保証 する 
も の で は あり ませ ん 。 各 機能 を 使用 する 場合 は eMbedded V sual CH+ 4 0、eMbedded M sual CHH 4 0 Servi ce 
Pack 1 や SLK PatfornmBunlder の オン ライ ンド キュ メン ト 、 マ イク ロ ソ フト 社 の 等 を 参照 し て くだ さい 。 


種類 


搭載 機能 


77 リ ケ テー ツ ョ ツ - ry トリ ュー ず 


IAct 1 VeSync 


Windows Messenger 


A ル 7 


ーッ ド 


受信 トイ 


77 リカー ッ ョ ツ お よび サビ の 開発 


C カ 2 お よび 1 ム 


Mcrosoft Foundation dasses (MO 


Focket Qtlook7 ザ ェクト t デ ル (ROOM AP 


Wndovs CE NT 用 の 標準 SLK 


IM52M 


77 ィ 7 アル ー ト 2 イ 7 う 9( ATD 


47" ゲ ェ ト 交換 7 トル (CHE 


ュ ッ ホー トー ビ 和 (CM 


7 要 ザ ェ 外 7t77” トル (SOAP) りー ルト 


メッ セー ゲー( MM) 


軽量 デイ ルク トリ 7 多 277H ト ルル ( TDAP) 27 イト 


イル ター ネ り ト クラ イイ ツ ト サ ー ビ "X 


Int erret Expl orer5.5 


JScrit 5.5 

VBScript 55 
JO か ビ X J7 ①⑤ か ビ ん X 
yr ル お よび エボ 人 7 ェ ー ス GWS 

ツェ ル 


49 ト リーー- ザ イツ ルー 7 エー 


ャ セキュリ テイ 


高度 な 暗号 / "イダ の ある 暗号 化 - じ ( yptoAP1.0) 


認証 すじ ん ( SSP ) 


チイ 7 7 クル が 


gital Rights Mnmagenert 


jrectShow 


WindowsMedi aH ayer 


jrectSound 


NEC Confidential 


56 


種類 


搭載 機能 


通信 サビ 2 お よび トー ゲ 


ト リー や グ - - 加 エリ 79 ト 7-2 (LAN 


ぇ トリ りー も ヤク - パー- ツ カル エリ アト 7-2( PAN 


トリ - も 2 - 広域 4 トリ - ク ( WAN 


Tel ephomyAP (TAPT 20 


全 次 y ト 上 ポイ ト ツー ポイ 作 トド 中 (PPPoB) 


【 


が 人生 777' ト 7- 和 2 (RAS/PPP) 


仮想 7 パート 9 ト 7- グ ′ (PPTP) 


MTP 


HTCP/IP6 玖 - ト 


Wndovs 49 ト リー ネル グ | AP / リ ゲイ 化 22 (SM FS) 


Wnsock"- ト 


リル タイ 通信 ( RIO イツ ト AP 


拡張 可能 証明 7 ロト ュ ル 


NEC Confidential 


57