RmRegisterResources 関数が失敗してしまう – プログラミング – Home

通知
すべてクリア

RmRegisterResources 関数が失敗してしまう


哲也
 哲也
(@哲也)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

RmRegisterResources 関数を実行すると、ERROR_INVALID_HANDLE が帰ってきて失敗
してしまいます。
RmStartSession 関数を実行は成功しています。

dwSe は 0 になります。
なぜ失敗するのでしょうか?

DWORD dwSe = -1
WCHAR szSessionKey[CCH_RM_SESSION_KEY + 1] = { 0 };
dwResult = RmStartSession(&dwSe, 0, szSessionKey);
if (dwResult != ERROR_SUCCESS)
{
return dwResult;
}

// Register items
DWORD nFiles = 2;
LPCWSTR szFileNames[] = { (LPCWSTR)strIExplorerFileName, (LPCWSTR)
strIEUserFileName };
dwResult = RmRegisterResources(dwSe, nFiles, szFileNames, 0, NULL, 0, NULL);
if (dwResult != ERROR_SUCCESS)
{
return dwResult;
}

開発環境は、 Vista の VS2005 になります。
よろしくおねがいします。


引用解決済
トピックタグ
しま
 しま
(@しま)
ゲスト
結合: 18年前
投稿: 123
 

RmRegisterResouce だとか RmStartSession だとかには詳しくないので
間違ったことを書くかもしれません

> WCHAR szSessionKey[CCH_RM_SESSION_KEY + 1] = { 0 };
> dwResult = RmStartSession(&dwSe, 0, szSessionKey);

ということは szSessionKey には有効な文字列は入っていませんね(空だから)
なので、 dwSe には 0 が入るのでしょう(ハンドルは作成しなかった)

オンライン版の MSDN によれば

RmRegisterResource の戻り値が ERROR_INVALID_HANDLE の場合は
「渡したハンドルには Restart Manger session が存在しない」と読める
説明があります


返信引用
哲也
 哲也
(@哲也)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

お世話になっております。

szSessionKey は RmStartSession を実行すると取得できるものなので
文字列を指定する必要はないと思います。

ちなみに、RmStartSession を実行したときには、数字が入って返ってきます。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> LPCWSTR szFileNames[] = { (LPCWSTR)strIExplorerFileName, (LPCWSTR)
> strIEUserFileName };

なぜキャストしているのかが気になるのですが…ファイル名の中身がワイド文字じゃない
ってことは無いですよね?
strIExplorerFileName と strIEUserFileName の宣言はどうなってます?


返信引用
哲也
 哲也
(@哲也)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

ファイルパスを直接指定するやり方でも試してみましたが、結果は同じでした。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

いや、ちゃんとワイド文字になってますよね? と。

LPCWSTR szFileNames[] = { LC:\\~ }; なら OK です。
LPCWSTR szFileNames[] = { (LPCWSTR)C:\\~ }; って書いてあったらダメです。


返信引用
哲也
 哲也
(@哲也)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

お世話になっております。

ワイド型でやっています。

直接指定した場合も以下のように書いてます。
LPCWSTR szFileNames[] = { LC:\\~ };


返信引用
lng
 lng
(@lng)
ゲスト
結合: 18年前
投稿: 9
 

UACの問題とかではなく?


返信引用
哲也
 哲也
(@哲也)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

uacの問題とはなんでしょうか?
実行レベルなども特に関係ないとおもいましたが・・・。


返信引用
lng
 lng
(@lng)
ゲスト
結合: 18年前
投稿: 9
 

いや一応言ってみただけです。失礼
こちらでも上のソースを実行してみましたが
dwSeが0で ERROR_INVALID_HANDLE は出ないですね
SDKは最新ですか?

こちらは
Vista VS2005SP1
Microsoft SDKs v6.1
環境で試しました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました