Difference between revisions of "MemoryRecord.Assign"
(No difference)
|
Revision as of 07:50, 24 October 2020
| Assign (Работа с записями) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция отвязывает запись от текущей привязки, и привязывает ее к заданному в аргументе буферу. В отличии от Allocate, содержимое буфера не заполняется нулями. См. также AssignToSystemMemory.
Синтаксис
MemoryRecord.Assign(<Буфер для привязки (BUFFER)>,<Индекс в буфере (INT)>)
Аргументы
<Буфер для привязки (BUFFER)>- Аргумент задает новый буфер для привязки.<Индекс в буфере (INT)>- (необязательный аргумент) Задает индекс в буфере, к которому будет осуществлена привязка созданной записи. По умолчанию привязка создается к началу буфера. Адресация буфера начинается с нуля.
Примеры
//Системные записи, связанные с разрешениями
SE_PRIVILEGE_ENABLED:=2;
rLUID_AND_ATTRIBUTES:=MemoryRecord.Create("Luid:I64,Attributes:UI32");
rTOKEN_PRIVILEGES1:=MemoryRecord.Create("PrivilegeCount:UI32,Privileges:A1:@rLUID_AND_ATTRIBUTES");
aBuf:=Buffer.Create(rTOKEN_PRIVILEGES1.Size());
rTOKEN_PRIVILEGES1.Assign(aBuf);
rTOKEN_PRIVILEGES1.PrivilegeCount:=1;
rTOKEN_PRIVILEGES1.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
rTOKEN_PRIVILEGES1.Privileges[0].Luid:=Luid;