Witam!
Mam wielki problem z otwarciem uchwytu urządzenia.
Na samym początku Tworzę sterownik trybu jądra, któy rejesruje urządzenie za pomocą takiego kodu:
VOID OnUnload(IN PDRIVER_OBJECT driverObject)
{
DbgPrint("Wywolano funkcje OnUnload\n");
}
PDEVICE_OBJECT g_Device;
const WCHAR deviceNameBuffer[] = L"\\Device\\Kropki112";
NTSTATUS DriverEntry(IN PDRIVER_OBJECT driverObject, IN PUNICODE_STRING registryPath)
{
NTSTATUS ntStatus;
UNICODE_STRING deviceNameUnicodeString;
RtlInitUnicodeString(&deviceNameUnicodeString,deviceNameBuffer);
ntStatus = IoCreateDevice(driverObject,0,&deviceNameUnicodeString,0x00001234,0,TRUE,&g_Device);
if(NT_SUCCESS(ntStatus))
{
DbgPrint("Wszytsko oK");
}
driverObject->DriverUnload;
return ntStatus;
}
Ładuje sterownik za pomocą menadżera SCM rejestruje Go i uruchamiam.
WinObj pokazuje zarejestrowane urządzenie, DebgView pokazuje komunikat "Wszytsko ok", jednak gdy próbuje utworzyć uchwyt urządzenia za pomocą następującego kodu:
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hDevice = CreateFile(L"\\\\Device\\Kropki112",GENERIC_READ,
0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hDevice == INVALID_HANDLE_VALUE)
{
printf("Error");
cout << GetLastError();
}
_getch();
return 0;
}
hDevice zwraca -1, a GetLastError 53 - ERROR_BAD_NETPATH
gdy próbuje jakieś inne urządzenie otworzyć, komunikat ten sam - ktoś ma jakiś pomysł co robie źle?
System Windows7 x64 z SP1, wszytskie poprawki instalowane na bieżąco