Ich versuche, symbolische Verbindung als Datei zu öffnen, die ZwOpenProcess
im Kernelraum verwendet. Die Verwendung von Code unter allen ist in XP-7 in Ordnung. Aber mit Windows 8.1 ZwOpenProcess
nicht mit unterschiedlichen NTSTATUS Codes, wie 0xC0000001
, 0xC000000D
Öffnen der symbolischen Verbindung im Kernel Windows8.1 +
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE FileHandle;
IO_STATUS_BLOCK IoStatus;
NTSTATUS Status;
InitializeObjectAttributes (&ObjectAttributes,
SymLinkOrDeviceName, // <--- \Device\CEDRIVER60
OBJ_KERNEL_HANDLE,
(HANDLE) NULL,
(PSECURITY_DESCRIPTOR) NULL);
Status = ZwOpenFile (&FileHandle,
FILE_READ_ACCESS,
&ObjectAttributes,
&IoStatus,
0,
FILE_NON_DIRECTORY_FILE);
if (!NT_SUCCESS (Status))
{
DbgPrint("TEST: ERROR %p ", Status); // <--- 0xC0000001, 0xC000000D
goto Exit;
}
habe ich geprüft, mit WinObj - symbolische Verknüpfung im System vorhanden, arbeitet Code gut auf XP-7.
Ich trind auch zu ändern, Zugriff auf - FILE_ANY_ACCESS - das gleiche Ergebnis.
im Allgemeinen Code ist korrekt, aber Fehlercode kann nicht IO Subsystem aber Treiber zurückgeben. Ich kenne keine speziellen Treiber, die CEDRIVER60 erstellen - möglicherweise erfordert es spezielle Parameter beim Erstellen (wie Dateipfad, EA, etc). Wenn Sie FILE_ANY_ACCESS verwenden - hier muss bereits IO subsytem einen Fehler an Sie zurückgeben. und ich verstehe nicht, wie ist ZwOpenProcess und Symlink hier verwandt ?? – RbMm