|
|
在EDK中做SCSI driver,环境是NT32,要在driver binding protocal support( )中打开pciio协议,当编译的时候发现open pciio protocal fail,代码如下:' I' Y' ^5 S" h- Z3 q3 @6 p
EFI_BREAKPOINT( );
4 m& Q) v e8 J Status = gBS->OpenProtocol (! D: F( `( @( a! c) w/ U7 [
Controller,
, g7 X" t, [6 X( Q# E &gEfiPciIoProtocolGuid,
6 M1 @9 j$ G( O (VOID **) &PciIo,0 K) H$ T$ d, ?3 Q( b0 i
This->DriverBindingHandle,
( L4 |, z3 o+ c) o0 l' ` Controller,/ b7 s8 b, p( e" }% _; E
EFI_OPEN_PROTOCOL_BY_DRIVER
% L) q$ {8 ]$ k& h3 h5 S );8 r: _* P. K u- B* w
if (EFI_ERROR (Status)) {
3 T* D5 a$ m; T4 b% ^ return Status;* K, K6 d* G* J0 s4 z" |; \
1:在NT32下打开一个PCIIO protocal,应该是与硬件没有任何关系的,为什么却fail?用VS studio调试跟踪发现,其实是在执行handle.c 文件中的CoreGetProtocolInterface( )函数时,在 Look at each protocol interface for a match时没有找到匹配protocal返回一个unsupport状态值。
+ g9 Q5 }- h- @( V; f: j0 I- P9 E2:当我在用EDK中提供的AtapiScsiPassThruDriverBindingSupported( )测试时,同样会出现此现象。/ { [- s. T8 I& a. u
请问:& G5 {& o$ O, e/ \! j9 Y
当invoke support( )时传递的controller参数需要硬件支持吗?如果不需要为什么会fail掉呢 |
|