Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Platforma inicjuje lokalny docelowy punkt wejścia/wyjścia sterownika dla urządzenia, gdy sterownik wywołuje WdfDeviceCreate. Aby pobrać uchwyt do lokalnego obiektu docelowego wejścia/wyjścia urządzenia, sterownik wywołuje WdfDeviceGetIoTarget.
Większość sterowników wysyła żądania tylko do lokalnego obiektu docelowego we/wy.
Aby zainicjować zdalny element docelowy we/wy dla urządzenia, sterownik musi:
Wywołaj WdfIoTargetCreate, aby utworzyć obiekt docelowy I/O.
Wywołaj WdfIoTargetOpen, aby otworzyć cel we/wy, tak aby sterownik mógł wysyłać do niego żądania.
Gdy sterownik wywołuje WdfIoTargetOpen, zazwyczaj identyfikuje zdalny obiekt docelowy we/wy, podając ciąg Unicode reprezentujący nazwę obiektu . Ta nazwa może identyfikować urządzenie, plik lub interfejs urządzenia. Framework wysyła żądania we/wy na szczyt stosu sterowników, który obsługuje nazwę obiektu.
Rzadko sterownik może zidentyfikować zdalny cel we/wy, podając wskaźnik do struktury DEVICE_OBJECT modelu sterowników systemu Windows (WDM). Ten wskaźnik identyfikuje inny sterownik w obrębie stosu sterownika wywołującego. Sterowniki oparte na strukturze ramowej rzadko używają tej techniki, ponieważ rzadko mają dostęp do struktur DEVICE_OBJECT innych sterowników.
Poniższy przykład pokazuje, jak przykładowy sterownik Ndisedge używa powyższej techniki do tworzenia i otwierania zdalnego celu wejścia/wyjścia.
status = WdfIoTargetCreate(Adapter->WdfDevice,
WDF_NO_OBJECT_ATTRIBUTES,
&Adapter->IoTarget);
if (!NT_SUCCESS(status)) {
DEBUGP(MP_ERROR, ("WdfIoTargetCreate failed 0x%x\n",
status));
return status;
}
WDF_IO_TARGET_OPEN_PARAMS_INIT_CREATE_BY_NAME(&openParams,
&fileName,
STANDARD_RIGHTS_ALL
);
status = WdfIoTargetOpen(Adapter->IoTarget,
&openParams);
if (!NT_SUCCESS(status)) {
DEBUGP(MP_ERROR, ("WdfIoTargetOpen failed 0x%x\n", status));
return status;
}