Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#1: 2011-06-22 13:30:23 ЛС | профиль | цитата
Создание HardLink программным путем в HiAsm в пакете Windows:
code_24452.txt
Вывод (сообщение): 0 - ошибка, любое другое число - все ок.
карма: 10
2
файлы: 1code_24452.txt [1.5KB] [554]
Голосовали:Ivann, 1nd1g0
Разработчик
Ответов: 26149
Рейтинг: 2127
#2: 2011-06-22 13:45:02 ЛС | профиль | цитата
Assasin, а как это может нам помочь
карма: 22

0
Ответов: 3889
Рейтинг: 362
#3: 2011-06-23 08:06:57 ЛС | профиль | цитата
Assasin, а с символьными ссылками проблема, что закомменчены? И функцию перечисления всех ссылок (путей) выбранного файла - цены бы не было. (doEnum -> onEnum)
карма: 1

0
Ответов: 3349
Рейтинг: 233
#4: 2011-06-23 09:27:51 ЛС | профиль | цитата
1nd1g0 писал(а):
Assasin, а с символьными ссылками проблема, что закомменчены?

1nd1g0, Он stdcall в объявлении забыл.
карма: 1

0
Разработчик
Ответов: 4698
Рейтинг: 426
#5: 2011-06-23 09:52:37 ЛС | профиль | цитата
Ivann писал(а):
1nd1g0, Он stdcall в объявлении забыл.

Не только, проблема еще в том, что у меня рабочий XP, а символьные работают только на семерке, на XP их надо делать как-то по другому, как - не смог найти.
P.S: семерка то у меня есть (на реальной машине стоит, XP на виртуальной), дело только в поддержке на XP.
------------ Дoбавленo в 09.44:
1nd1g0 писал(а):
И функцию перечисления всех ссылок (путей) выбранного файла

Такое в теории возможно только для HardLink-ов, символьные ссылки никак не связаны с объектом, на который ссылаются (поэтому такие ссылки и называют висячими).
------------ Дoбавленo в 09.46:
nesco писал(а):
Assasin, а как это может нам помочь

1. О том, что в XP можно так делать не всем известно.
2. Стороннюю программу как-то не хочется качать.
3. Этого не умеет пакет Windows.
------------ Дoбавленo в 09.52:
Версия с SymbolicLink. (Работает только в Windows 7):
Add(MainForm,2953706,98,154)
{
}
Add(Edit,13358286,294,140)
{
Left=15
Top=5
Width=115
Text="C:\cout.out"
}
Add(Edit,16575284,343,140)
{
Left=15
Top=35
Width=115
Text="C:\cout.txt"
}
Add(Button,1323108,266,203)
{
Left=140
Top=35
Width=100
Caption="CreateHard"
link(onClick,6185762:doCreateHard,[])
}
Add(InlineCode,6185762,315,203)
{
WorkPoints=#12:doCreateHard|16:doCreateSymbolic|
EventPoints=#8:onCreate|
DataPoints=#10:SourceFile|8:LinkFile|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onCreate:THI_Event;|4: |34: SourceFile,LinkFile:THI_Event;|4: |56: procedure doCreateHard(var _Data:TData; Index:word);|60: procedure doCreateSymbolic(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|176:function CreateSymbolicLink(lpFileName,lpExistingFileName:PChar; lpSecurityAttributes:PSecurityAttributes):boolean; stdcall; external 'kernel32.dll' name 'CreateSymbolicLinkA';|0:|35:procedure THiAsmClass.doCreateHard;|5:begin|123: _hi_onEvent(onCreate,integer(CreatehardLink(PChar(ReadString(_Data,LinkFile)),PChar(ReadString(_Data,SourceFile)),nil)));|4:end;|0:|39:procedure THiAsmClass.doCreateSymbolic;|5:begin|127: _hi_onEvent(onCreate,integer(CreateSymbolicLink(PChar(ReadString(_Data,LinkFile)),PChar(ReadString(_Data,SourceFile)),nil)));|4:end;|0:|4:end.|
link(onCreate,10084159:doMessage,[])
link(SourceFile,13358286:Text,[(321,187)(300,187)])
link(LinkFile,16575284:Text,[(328,187)(349,187)])
}
Add(Message,10084159,364,203)
{
}
Add(Button,8719893,266,252)
{
Left=140
Top=5
Width=100
Caption="CreateSymbolic"
link(onClick,6185762:doCreateSymbolic,[(306,258)(306,216)])
}
карма: 10
0
Гость
Ответов: 17029
Рейтинг: 0
#6: 2011-06-23 09:52:44 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-21 04:08:13
карма: 0

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#7: 2011-06-23 09:59:26 ЛС | профиль | цитата
Assasin писал(а):
О том, что в XP можно так делать не всем известно

Да причем здесь XP
Я хотел спросить -- для чего это может пригодиться рядовому пользователю
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#8: 2011-06-23 10:08:30 ЛС | профиль | цитата
nesco писал(а):
Я хотел спросить -- для чего это может пригодиться рядовому пользователю

Мне пригодилось, вот я и решил поделиться с другими Пока больше аргументов нет, посмотрим на отзывы.
карма: 10
0
Ответов: 5227
Рейтинг: 587
#9: 2011-06-23 10:11:26 ЛС | профиль | цитата
nesco писал(а):
Я хотел спросить -- для чего это может пригодиться рядовому пользователю
вот и мне интересно
------------ Дoбавленo в 10.11:
Assasin писал(а):
Мне пригодилось
где и в чём
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 4698
Рейтинг: 426
#10: 2011-06-23 10:17:58 ЛС | профиль | цитата
andrestudio писал(а):
где и в чём

Пока только в программировании: с помощью таких ссылок мне проще тестить программы, а так же это решает проблему доступности одного файла в нескольких проектах (именно так я и планирую сделать в грядущем проекте)
------------ Дoбавленo в 10.17:
Нашел способ перечисления всех Hard-ссылок, но работает опять-таки начиная от (кстати, не семерки, а) висты, могу попытаться прикрутить.
карма: 10
0
Разработчик
Ответов: 26149
Рейтинг: 2127
#11: 2011-06-23 10:27:27 ЛС | профиль | цитата
Я так понимаю, что это что-то типа нескольких виртуальных имен на один физический блок данных
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#12: 2011-06-23 10:28:59 ЛС | профиль | цитата
nesco писал(а):
Я так понимаю, что это что-то типа нескольких виртуальных имен на один физический блок данных

Да, файлов много, а все указывают на один кластер файловой системы.
карма: 10
0
Ответов: 3889
Рейтинг: 362
#13: 2011-06-23 10:42:45 ЛС | профиль | цитата
Assasin, перечисление и символьные ссылки пригодятся, пускай даже на NT6.x. Сам очень часто ими пользуюсь.
------------ Дoбавленo в 10.42:
Assasin писал(а):
символьные работают только на семерке, на XP их надо делать как-то по другому, как - не смог найти

Делал на ассемлере лет семь назад, называются они Junction Points. Могу попробовать найти материалы, чтобы не обижать NT5.1. Но сам к IC прикручивать буду долго.

[offtop]Вот бы ещё кто с USN журналом научился из HiAsm работать... [/offtop]
карма: 1

0
Разработчик
Ответов: 4698
Рейтинг: 426
#14: 2011-06-23 10:47:51 ЛС | профиль | цитата
1nd1g0 писал(а):
Делал на ассемлере лет семь назад, называются они Junction Points.

Код создания такой ссылки большой? А еще я пока не очень дружу с асмом, если буду переводить, то потребуется твоя помощь (хотя в паскале можно делать ассемблерные вставки, может и не потребуется переводить).
карма: 10
0
Ответов: 3889
Рейтинг: 362
#15: 2011-06-23 10:59:24 ЛС | профиль | цитата
Assasin, лучше делать на ЯВУ, на асме там много ручной работы.
Я тебе нашёл исходники готовой утилиты на Delphi4 - это прямой порт утилиты Junction Руссиновича, написанной на C.
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)