Мы разработали приложение XP, которое использует ConnectNamedPipe () в режиме блокировки.
При тестировании на Win 7 приложение ведет себя так, как будто оно разблокировано: ConnectNamedPipe () возвращается до того, как его клиент VBS подключается.Возникает исключение («Ожидание процесса, чтобы открыть другой конец канала») при вызове StreamReader.ReadLine ().При работе с отладчиком этого не происходит даже в Win 7!
Вот функции, которые мы используем: [
DllImport("kernel32.dll", SetLastError = true)]
public static extern SafeFileHandle CreateNamedPipe(
String pipeName,
uint dwOpenMode,
uint dwPipeMode,
uint nMaxInstances,
uint nOutBufferSize,
uint nInBufferSize,
uint nDefaultTimeOut,
IntPtr lpSecurityAttributes);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern int ConnectNamedPipe(
SafeFileHandle hNamedPipe,
IntPtr lpOverlapped);
После того, как мы написали это, мы нашли пример MSиз примеров CodePlex All-In-One Code Framework, которые делают это: (мы пытаемся это сейчас)
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern SafePipeHandle CreateNamedPipe(string pipeName,
PipeOpenMode openMode, PipeMode pipeMode, int maxInstances,
int outBufferSize, int inBufferSize, uint defaultTimeout,
SECURITY_ATTRIBUTES securityAttributes);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool ConnectNamedPipe(SafePipeHandle hNamedPipe,
IntPtr overlapped);
У кого-нибудь есть идея для направления?Может ли это быть связано с безопасностью?Спасибо.