![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Named Pipes
Polevi © (2006-09-11 17:09:00)нужно получать инфу от сервиса, создаю однонаправленный пайп
hPipe:=CreateNamedPipe('\\.\PIPE\Test',PIPE_ACCESS_OUTBOUND,PIPE_TYPE_BYTE,1,buf Size,bufSize,INFINITE,nil);
if hPipe<>INVALID_HANDLE_VALUE then
while true do
begin
ConnectNamedPipe(hPipe,nil);
if Terminated then break;
WriteFile(hPipe,
FlushFileBuffers(hPipe);
DisconnectNamedPipe(hPipe);
end;
в качестве клиента использую type
type \\.\Pipe\Test отлично отображает возвращаемые данные
но при попытке указать имя сервера
type \\localhost\Pipe\Test получаю "неверная функция"
что не так ?
Игорь Шевченко (2006-09-14 16:25:00) [1]Polevi © (14.09.06 13:36) [33]
> type \\.\Pipe\Test работает
Это ж не UNC, это локальное имя.
han_malign © (14.09.06 14:08) [35]
> - умеет - "простые файлы" заглатывает...
> type \\127.0.0.1\shared\test.txt
Это если он shared, не так ли ? Я не в курсе, с какими опциями команда type выдает CreateFile.
Rouse_ (2006-09-14 14:29:00) [2]
> может все-таки \\?\UNC\localhost\pipe\test\ ?
Ты не путай символьную ссылку с путем...
han_malign (2006-09-14 14:11:00) [3]
> на второй: \??\UNC\localhost\pipe\test\
- может все-таки \ \?\UNC\localhost\pipe\test\ ?
han_malign (2006-09-14 14:08:00) [4]
> Я извиняюсь, а type умеет с UNC-именами работать ? (Я не в курсе просто)
- умеет - "простые файлы" заглатывает...
type \\127.0.0.1\shared\test.txt
- с удаленных и по имени компьютера тоже берет.
а вот localhost - не берет - говорит "You were not connected because a duplicate name exists on the network. Go to System in Control Panel to change the computer name and try again."
XP SP2
но тут еще вопрос в доменных политиках, в наличии DNS, и т.д. и т.п. .
Rouse_ (2006-09-14 13:44:00) [5]Пустые строки? Хм... нтересно...
у меня на первый выдает: \??\pipe\test\
на второй: \??\UNC\localhost\pipe\test\
Polevi (2006-09-14 13:36:00) [6]>Rouse_ © (13.09.06 14:22) [31]
твой код пустые строки возвращает
>Игорь Шевченко © (13.09.06 17:50) [32]
type \\.\Pipe\Test работает
Игорь Шевченко (2006-09-13 17:50:00) [7]Я извиняюсь, а type умеет с UNC-именами работать ? (Я не в курсе просто)
Rouse_ (2006-09-13 14:22:00) [8]В смысле через свое CreateFile с указанием имен которые выдаст мой код...
Rouse_ (2006-09-13 14:21:00) [9]Попробуй ка выполнить соединение на вот эти два имени:
type
PUnicodeString = ^TUnicodeString;
TUnicodeString = packed record
Length,
MaxLength: WORD;
Buffer: PWideChar;
end;
function RtlDosPathNameToNtPathName_U(DosName: PWideChar;
var NtName: TUnicodeString; DosFilePath: PPWideChar;
var NtFilePath: TUnicodeString): BOOL; stdcall; external 'ntdll.dll';
implementation
procedure TForm18.FormCreate(Sender: TObject);
var
Test1, Test2: PWideChar;
NtName, NtFilePath: TUnicodeString;
begin
Test1 := '\\.\pipe\test\';
Test2 := '\\localhost\pipe\test\';
RtlDosPathNameToNtPathName_U(Test1, NtName, nil, NtFilePath);
ShowMessage(NtName.Buffer);
RtlDosPathNameToNtPathName_U(Test2, NtName, nil, NtFilePath);
ShowMessage(NtName.Buffer);
end;
Polevi (2006-09-13 13:02:00) [10]>Сергей М. © (13.09.06 11:09) [28]
угу, чтобы понять надо отладчиком смотреть их потроха
чтото не видно Игоря Шевченко, может он чего скажет по этому вопросу
Сергей М. (2006-09-13 11:09:00) [11]
> Polevi © (13.09.06 11:07) [27]
Кстати, с copy и xcopy - та же история
Polevi (2006-09-13 11:07:00) [12]я рад за тебя
мой пример тоже "отлично работает с удаленными серверами"
что ты можешь сказать по сабжу, а именно использование type для чтения из пайпа
Alex Konshin (2006-09-13 02:06:00) [13]У меня на сайте есть пример по named pipes, смотри в MS SQL Alerter http://home.earthlink.net/~akonshin/files/SQLAlert.zip
Насколько я помню, он отлично работал с удаленными серверами.
Polevi (2006-09-12 11:54:00) [14]понятно
вообщем я понял не судьба, напишу своего клиента
спасибо за внимание
Сергей М. (2006-09-12 11:30:00) [15]
> Polevi © (12.09.06 11:13) [23]
У меня:
'Access denied' в ответ на type \\CompName\Pipe\Test
'A duplicate name exists on the network' в ответ на type \\localhost\Pipe\Test
Polevi (2006-09-12 11:13:00) [16]Неверная функция
неплохо бы отладчиком ковырнуть, да нет его у меня
Сергей М. (2006-09-12 10:54:00) [17]
> не работает, в том то и беда
что говорит ?
Polevi (2006-09-12 10:51:00) [18]>type \\CompName\Pipe\Test
не работает, в том то и беда
я расчитывал таким образом получать статистику с сервиса из любой машины в сети
написать своего клиента 2 минуты делов, но охота понять в чем проблема
Сергей М. (2006-09-12 10:45:00) [19]
> Polevi © (12.09.06 10:17) [18]
А если так
type \\CompName\Pipe\Test
?
> насчет CloseHandle ..неожидал я такой подставы
Начиная с Vista и Longhorn эта засада ликвидирована
Polevi (2006-09-12 10:18:00) [20]кстати насчет CloseHandle ты был прав, неожидал я такой подставы