エラーコード2:指定されたファイルが見つかりません。
2022-02-17 03:48:09
一般的なクライアントPCでは、これは大きな問題ではありません。しかし、サーバーアプリケーション環境では、これは大変なことなのです。次のようなコードを想像してみてください。
// Process 1:
......
HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, _T("my_private_event_name")); // Assume it will work here
......
// Process 2:
HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("my_private_event_name")); // Do you succeed????
次の2つのシナリオを想像してください。
1. 通常のユーザーコール。すなわち、ユーザーがプロセス1を開始し、その後プロセス2を開始する場合。
2. ユーザーが最初にプロセス1を起動し、プロセス2がスクリプト言語(例:asp、データベースプロシージャ......)によって呼び出された場合。
明らかに、最初のケースでは、基本的に問題はありません。問題は、2番目のアプリケーション環境です
この場合、残念ながら "The system cannot find the file specified" エラーに直面します! これはどうしたことでしょう。パーミッションでしょうか?そんな簡単なことなら、問題を記録するために別の記事を書く必要はないでしょう。私もこの件で午前中を無駄にしました。問題の根源は "名前空間" です! 見覚えありますよね?見覚えありますよね?しかし、これは本当に呆れるほどです しかし、これは本当に不可解です!カーネルオブジェクトである以上、OSのグローバルに存在するはずで、どんなアプリケーションがそれを見つけることができても、なぜ名前を追加したのにそれを見つけることができないのでしょうか?これは、カーネル名がOS内部の名前空間にも格納されていることを意味しているとしか思えません。エクスプローラやcmdで両プロセスを起動すると、同じ空間に名前が格納されます。しかし、スクリプト言語がこれらのプロセスを呼び出すと、これらの子プロセスは親プロセス(スクリプト言語)の特徴の一部-カーネルオブジェクトの名前空間を含む-を継承する可能性があります。そのため、上記の2つのプロセスを異なるアプリケーション環境で別々に起動すると、通常は問題にならないAPIの問題が発生します。名前空間が異なるため、名前によるカーネルオブジェクトの検索に失敗(ErrorCode: 2)してしまうのです!
<スパン この問題の最終的な解決策は、カーネル・オブジェクトの名前にグローバルな名前空間を追加することです すなわち、上の2つの段落は次のように変更された。
//Process 1:
......
HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, _T("global\\my_private_event_name")); // Assume it will succeed here
......
// Process 2:
HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("Global\\\my_private_event_name")); // Do you succeed????
この後、今後このようなコードを書く場合は、"Global"名前空間を追加することをお勧めします。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例