Udostępnij przez


Określanie wyłącznego dostępu do obiektów urządzeń

Jeśli wyłączny dostęp do urządzenia jest włączony, naraz można otworzyć tylko jeden uchwyt do urządzenia. Aby menedżer I/O wymuszał wyłączny dostęp do urządzenia, właściwość wyłączności musi być ustawiona dla nazwanego obiektu urządzenia w stosie urządzeniowym.

W przypadku stosu urządzeń WDM, który ma zarówno PDO, jak i FDO, właściwość zastrzeżoną można ustawić tylko przez plik INF, używając dyrektywy INF AddReg. PDO jest obiektem o nazwie w stosie, ale to sterownik magistrali (a nie sam sterownik funkcji) tworzy PDO na zlecenie sterownika funkcji. Jedynym sposobem, aby nakierować kierowcę magistrali na ustawienie flagi wyłączności dla PDO, jest użycie klas lub plików INF urządzenia. (Wywołanie procedury IoCreateDevice powoduje utworzenie FDO; ustawienie flagi wyłącznej dla FDO nie ma żadnego efektu).

Sterowniki, których obiekty urządzeń nie są skumulowane, takie jak sterowniki innych niż WDM i urządzenia działające w trybie nieprzetworzonym, mogą używać procedury IoCreateDeviceSecure , aby ustawić właściwość wyłączną dla nazwanego obiektu urządzenia.

Menedżer we/wy wymusza wyłączność na podstawie nazwy na nazwanych obiektach urządzeń, niezależnie od nazwy końcowej. Załóżmy na przykład, że obiekt urządzenia ma nazwę "\Device\DeviceName". Następnie menedżer we/wy wymusza wyłączność dla żądania otwarcia "\Device\DeviceName\Nazwa_pliku1", a następnie "\Device\DeviceName\Nazwa_pliku2". Jeśli dwa obiekty w stosie urządzenia mają nazwę (co nie jest zalecane), menedżer wejścia/wyjścia umożliwia otwarcie pojedynczego uchwytu dla każdego obiektu. W takiej sytuacji kierowcy muszą wymusić wyłączność za pomocą funkcji callback DRIVER_DISPATCH. Menedżer we/wy również nie wymusza wyłączności otwierania w odniesieniu do innych uchwytów plików. Aby uzyskać więcej informacji na temat żądań otwierania plików w przestrzeni nazw urządzenia, zobacz Kontrolowanie dostępu do przestrzeni nazw urządzeń.