Win32: транзакции по анонимным каналам - PullRequest
1 голос
/ 22 сентября 2010

Документация для Функция TransactNamedPipe утверждает, что «Этот параметр также может быть дескриптором анонимного канала, возвращаемого функцией CreatePipe» Это будет означать, что можно использовать транзакции на анонимных каналах. Как я понимаю, транзакции - это операции чтения / записи, а анонимные каналы - либо чтение, либо запись - для меня это не имеет смысла.

  1. Действительно ли возможно использовать транзакции с анонимными каналами?
  2. Если да, то как? Например, какой из двух дескрипторов, полученных при вызове CreatePipe, я должен передать TransactNamedPipe?

1 Ответ

1 голос
/ 22 сентября 2010

Предостережение: Я не пробовал это. Однако документы MSDN для CreatePipe содержат подтверждающие доказательства того, почему это может работать. Эти документы являются очень зрелыми на данный момент - именованные каналы были очень ранней версией Windows - и меня удивило бы, если это неверно.

Анонимные каналы реализованы с использованием именованная труба с уникальным именем. Поэтому вы часто можете передать ручку на анонимный канал к функции это требует дескриптора для именованного труба.

Это, в сочетании с приведенной выше цитатой, предполагает, что это будет работать. Не уверен, какой дескриптор (чтение или запись) из CreatePipe вы бы использовали - возможно, любой из них будет работать, поскольку это один дуплекс с именованным каналом под крышками.

...