名前付きパイプを使用してユーザー アプリケーションにデータを送信する仮想プリンター ドライバーを作成しようとしています。「XPSDrv Driver and Filter Sample」を最初に使用しています。このクライアント コードを配置した最後に新しいフィルターを追加しました。
HANDLE hPipe;
LPTSTR lpvMessage=TEXT("Message from UMDF!");
BOOL fSuccess = FALSE;
DWORD cbToWrite, cbWritten, dwMode;
LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\mynamedpipe");
hPipe = CreateFile(
lpszPipename,
//GENERIC_READ |
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
dwMode = PIPE_READMODE_MESSAGE;
fSuccess = SetNamedPipeHandleState(
hPipe,
&dwMode,
NULL,
NULL);
if (fSuccess)
{
cbToWrite = (lstrlen(lpvMessage)+1)*sizeof(TCHAR);
fSuccess = WriteFile(
hPipe,
lpvMessage,
cbToWrite,
&cbWritten,
NULL);
}
コードはコンソール アプリケーション プロジェクトでは機能しますが、UMDF プリンター ドライバー内では機能しません。サーバーは、常に開始されるコンソール アプリケーションでもあります。誰かが理由を知っていますか?または、プリンタードライバーをデバッグする簡単な方法を知っていますか?
万歳、ダニエル