次の方法で共有


CreateMailslotA 関数 (winbase.h)

指定した名前の mailslot を作成し、mailslot サーバーが mailslot に対する操作を実行するために使用できるハンドルを返します。 mailslot は、それを作成するコンピューターに対してローカルです。 指定した名前の mailslot が既に存在する場合、エラーが発生します。

構文

HANDLE CreateMailslotA(
  [in]           LPCSTR                lpName,
  [in]           DWORD                 nMaxMessageSize,
  [in]           DWORD                 lReadTimeout,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

パラメーター

[in] lpName

mailslot の名前。 この名前は次の形式である必要があります。

\\.\mailslot\[パス]名前

名前フィールドは一意である必要があります。 名前には、円記号で区切られた複数レベルの擬似ディレクトリを含めることができます。 たとえば、\\.\mailslot\example_mailslot_name と \\.\mailslot\abc\def\ghi の両方が有効な名前です。

[in] nMaxMessageSize

mailslot に書き込むことができる 1 つのメッセージの最大サイズ (バイト単位)。 メッセージに任意のサイズを指定するには、この値を 0 に設定します。

[in] lReadTimeout

メッセージが mailslot に書き込まれるのを読み取り操作が待機してからタイムアウトになるまでの時間 (ミリ秒単位)。 次の値は特別な意味を持ちます。

価値 意味
0
メッセージが存在しない場合は直ちに返されます。 (システムは即時戻り値をエラーとして扱いません。
MAILSLOT_WAIT_FOREVER
((DWORD)-1)
メッセージを永久に待機します。
 

このタイムアウト値は、後続のすべての読み取り操作と、継承されたすべての mailslot ハンドルに適用されます。

[in, optional] lpSecurityAttributes

SECURITY_ATTRIBUTES 構造体へのポインター。 構造体の bInheritHandle メンバーは、返されたハンドルを子プロセスによって継承できるかどうかを決定します。 lpSecurityAttributes が NULL場合、ハンドルを継承できません。

戻り値

関数が成功した場合、戻り値は、サーバー の mailslot 操作で使用する mailslot へのハンドルです。 この関数によって返されるハンドルが非同期であるか、重複しています。

関数が失敗した場合、戻り値は INVALID_HANDLE_VALUE。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

mailslot は、次のいずれかの条件が満たされるまで存在します。

  • 最後の (継承または複製された可能性がある) ハンドルは、CloseHandle 関数を使用して閉じられます。
  • 最後の (継承または複製された可能性がある) ハンドルを所有するプロセスは終了します。
システムは、2 番目のメソッドを使用して mailslot を破棄します。

mailslot にメッセージを書き込むには、プロセスは、CreateFile 関数を使用し、次のいずれかの形式を使用して mailslot 名を指定します。

形式 使い
\\.\mailslot\ ローカル mailslot に対するクライアント ハンドルを取得します。
\\コンピューター名\mailslot\ リモート mailslot へのクライアント ハンドルを取得します。
\\ドメイン名\mailslot\ 指定したドメイン内の指定した名前を持つすべての mailslot に対するクライアント ハンドルを取得します。
\\*\mailslot\ システムのプライマリ ドメインで指定された名前を持つすべての mailslot に対するクライアント ハンドルを取得します。
 

CreateFile がドメインを指定するか、アスタリスク形式を使用してシステムのプライマリ ドメインを指定する場合、アプリケーションは一度に 424 バイトを超えるバイトを mailslot に書き込むことができません。 アプリケーションがこれを試みると、WriteFile 関数は失敗し、GetLastError ERROR_BAD_NETPATHを返します。

アプリケーションは、CreateFile を使用して mailslot へのクライアント ハンドルを取得するときに、FILE_SHARE_READ フラグを指定する必要があります。

存在しない mailslot アクセスするために CreateFile が呼び出されると、ERROR_FILE_NOT_FOUND エラー コードが設定されます。

例については、「mailslotの作成 」を参照してください。

手記

winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CreateMailslot を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

CloseHandle の

CreateFile の

GetMailslotInfo を する

Mailslot Functions

Mailslots の概要

SECURITY_ATTRIBUTES

SetMailslotInfo の

WriteFile の