エラー:「このコマンドを処理するのに必要な記憶域をサーバーで確保できません」
一、
ある日、ネットワーク上の他のPCの共有フォルダにアクセスしようとすると、
「このネットワークリソースを使用するアクセス許可がない可能性があります。
アクセス許可があるかどうかこのサーバーの管理者に問い合わせてください。
このコマンドを処理するのに必要な記憶域をサーバーで確保できません。」
とのエラーが出た。
気のせいか、エラーは忙しい時を狙ったかのように不意を突く。
心当たりはない。
「このコマンドを処理するのに必要な記憶域をサーバーで確保できません」というエラー・メッセージを検索にかけてみると、多くの人がこのエラーに遭遇しているようだ。
二、
この問題は、「IRPStackSize」というパラメータの値を大きくすることで、回避できるものらしい。
「IRP」とは、Input/Output request packet(入出力要求パケット)の略で、Windows Driver Model (WDM) やWindows NTのディバイス・ドライバで、相互にあるいはOSと通信するために、用いられるカーネル・モードの構造体であるという。「IRP Stack Size」とは、Windows XPやWindows Server 2003等のOSで使用されるIRPのstack locationの数を指定するパラメータであるという。
IRPStackSizeの値を大きくする手順は、マイクロソフト サポート オンライン(「ウイルス対策ソフトウェアが原因でイベント ID 2011 が発生することがある」)に以下のように記されている。
「1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
2. regedit と入力し、[OK] をクリックします。
3. 次のキーに移動します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
4. 右側のウィンドウで、レジストリ値の [IRPStackSize] をダブルクリックします。
注 : 値 IRPStackSize がない場合は、次の手順を実行して作成します。
1. レジストリの [Parameters] キーをクリックし、右側のウィンドウを右クリックします。
2. [新規] をポイントし、[DWORD 値] をクリックします。
3. IRPStackSize と入力します。
重要 : 値の名前では大文字と小文字が区別されるため、"IRPStackSize" は記載どおりに正確に入力する必要
があります。
5. [IRPStackSize] を右クリックし、[変更] または [編集] をクリックし、ベースを 10 進数に変更します。
6. [値のデータ] ボックスに、表示されている値よりも大きな値を入力します。
IRPStackSize エントリが存在しない場合、デフォルトで値は 15 に設定されます。手順 4. に記載された手順を
使用して、値 IRPStackSize を作成した場合は、15 よりも大きな値を入力します。値は、3 ずつ増やすことをお
勧めします。つまり、前の値が 11 の場合は、14 と入力し、[OK] をクリックします。
7. レジストリ エディタを終了します。
8. コンピュータを再起動します。
上記の手順を実行しても、問題が依然として発生する場合は、IRPStackSize の値をさらに大きくします。この値の Windows 2000 での最大値は、50 (16 進数では 0x32) です。」
Windows XP、Microsoft Windows Server 2003でも、IRPStackSize のデフォルト値は 15 で、範囲は 11 ~ 50 だとされている。
私のPCの場合は、「21」でアクセスが可能となった。
三、
ただ、気になったのは、なぜIRPStackSizeの値を「3」ずつ増やすことが推奨されているのか、である。これについては、時間もなく、調べきれなかった。
何よりも原因がよくわからないままである。「ウイルス対策ソフトが原因で」起こるとされており、このエラーが発生したPCではMcAfeeを使っているが、McAfee KnowledgeBaseでこの問題が指摘されている製品とは異なるようである。
しかし、まあ、問題は解決したのでよしとしましょう。
※上記以外に関連する主なウェブ・ページ
・「LANMAN サーバーでの IRP スタック サイズの変更」
・「Windows 2000、Windows XP、および Windows Server 2003 の IRPStackSize パラメーターについて」
・「[エラー メッセージ] Not Enough Server Storage is Available...」
・IRPに関する詳細について
・「IRPの処理:すべてのドライバ作成者が知る必要のある事項」
ある日、ネットワーク上の他のPCの共有フォルダにアクセスしようとすると、
「このネットワークリソースを使用するアクセス許可がない可能性があります。
アクセス許可があるかどうかこのサーバーの管理者に問い合わせてください。
このコマンドを処理するのに必要な記憶域をサーバーで確保できません。」
とのエラーが出た。
気のせいか、エラーは忙しい時を狙ったかのように不意を突く。
心当たりはない。
「このコマンドを処理するのに必要な記憶域をサーバーで確保できません」というエラー・メッセージを検索にかけてみると、多くの人がこのエラーに遭遇しているようだ。
二、
この問題は、「IRPStackSize」というパラメータの値を大きくすることで、回避できるものらしい。
「IRP」とは、Input/Output request packet(入出力要求パケット)の略で、Windows Driver Model (WDM) やWindows NTのディバイス・ドライバで、相互にあるいはOSと通信するために、用いられるカーネル・モードの構造体であるという。「IRP Stack Size」とは、Windows XPやWindows Server 2003等のOSで使用されるIRPのstack locationの数を指定するパラメータであるという。
IRPStackSizeの値を大きくする手順は、マイクロソフト サポート オンライン(「ウイルス対策ソフトウェアが原因でイベント ID 2011 が発生することがある」)に以下のように記されている。
「1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
2. regedit と入力し、[OK] をクリックします。
3. 次のキーに移動します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
4. 右側のウィンドウで、レジストリ値の [IRPStackSize] をダブルクリックします。
注 : 値 IRPStackSize がない場合は、次の手順を実行して作成します。
1. レジストリの [Parameters] キーをクリックし、右側のウィンドウを右クリックします。
2. [新規] をポイントし、[DWORD 値] をクリックします。
3. IRPStackSize と入力します。
重要 : 値の名前では大文字と小文字が区別されるため、"IRPStackSize" は記載どおりに正確に入力する必要
があります。
5. [IRPStackSize] を右クリックし、[変更] または [編集] をクリックし、ベースを 10 進数に変更します。
6. [値のデータ] ボックスに、表示されている値よりも大きな値を入力します。
IRPStackSize エントリが存在しない場合、デフォルトで値は 15 に設定されます。手順 4. に記載された手順を
使用して、値 IRPStackSize を作成した場合は、15 よりも大きな値を入力します。値は、3 ずつ増やすことをお
勧めします。つまり、前の値が 11 の場合は、14 と入力し、[OK] をクリックします。
7. レジストリ エディタを終了します。
8. コンピュータを再起動します。
上記の手順を実行しても、問題が依然として発生する場合は、IRPStackSize の値をさらに大きくします。この値の Windows 2000 での最大値は、50 (16 進数では 0x32) です。」
Windows XP、Microsoft Windows Server 2003でも、IRPStackSize のデフォルト値は 15 で、範囲は 11 ~ 50 だとされている。
私のPCの場合は、「21」でアクセスが可能となった。
三、
ただ、気になったのは、なぜIRPStackSizeの値を「3」ずつ増やすことが推奨されているのか、である。これについては、時間もなく、調べきれなかった。
何よりも原因がよくわからないままである。「ウイルス対策ソフトが原因で」起こるとされており、このエラーが発生したPCではMcAfeeを使っているが、McAfee KnowledgeBaseでこの問題が指摘されている製品とは異なるようである。
しかし、まあ、問題は解決したのでよしとしましょう。
※上記以外に関連する主なウェブ・ページ
・「LANMAN サーバーでの IRP スタック サイズの変更」
・「Windows 2000、Windows XP、および Windows Server 2003 の IRPStackSize パラメーターについて」
・「[エラー メッセージ] Not Enough Server Storage is Available...」
・IRPに関する詳細について
・「IRPの処理:すべてのドライバ作成者が知る必要のある事項」