10-08-2009, 12:01 PM
TF6M كتب :السلام عليكم
- صيغة الدالة (****ا أن تكون صحيحة) :
بالتوفيق ,,
و عليكم السلام و رحمة الله
جيد اخي TF6M اخذت المثال الخاص بــ KmdKit4D :thumbsup:
نفس الدالة بعد بعض التعديل و التنظيم.
PHP كود :
function _DriverEntry(DriverObject: PDriverObject; RegistryPath: PUnicodeString): NTSTATUS; stdcall;
var
UnicodeDirPath: UNICODE_STRING;
UnicodeFilePath: UNICODE_STRING;
DirObject: OBJECT_ATTRIBUTES;
FileObject: OBJECT_ATTRIBUTES;
hDirectory: THANDLE;
hFile: THANDLE;
IOSTATUSBLOCK: IO_STATUS_BLOCK;
begin
DbgPrint('Test Driver :: Loaded');
DriverObject^.DriverUnload := @DriverUnload;
RtlInitUnicodeString(UnicodeDirPath, '\??\C:\Delphi4Arab');
RtlInitUnicodeString(UnicodeFilePath, '\??\C:\Delphi4Arab\Test.txt');
InitializeObjectAttributes(DirObject, @UnicodeDirPath, OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, 0, nil);
InitializeObjectAttributes(FileObject, @UnicodeFilePath, OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, 0, nil);
Result := ZwCreateFile(@hDirectory,
SYNCHRONIZE,
@DirObject,
@IOSTATUSBLOCK,
nil,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OPEN_IF,
FILE_DIRECTORY_FILE + FILE_SYNCHRONOUS_IO_NONALERT,
nil,
0);
if Result = STATUS_SUCCESS then
begin
if IOSTATUSBLOCK.Information = FILE_CREATED then
begin
DbgPrint('Directory Created Sucessfully');
end else
if IOSTATUSBLOCK.Information = FILE_OPENED then
begin
DbgPrint('Directory Already Exists and Was Opened');
end;
ZwClose(hDirectory);
end;
Result := ZwCreateFile(@hFile,
SYNCHRONIZE,
@FileObject,
@IOSTATUSBLOCK,
nil,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_CREATE,
FILE_SYNCHRONOUS_IO_NONALERT,
nil,
0);
if Result = STATUS_SUCCESS then
begin
DbgPrint('File Created Sucessfully');
ZwClose(hFile);
end else
begin
DbgPrint('Can''t Create File - Already Exists Status: %08X', Result);
end;
Result := STATUS_SUCCESS;
end;
الدريفر مرفق ايضا.

