Why Smart card reader is not listed by the resource manager ?

E

Eshanye_kp

Hi,

I have written a smart card reader driver using the ddk sample pscr for
WinXP. When the WinAPI 'SCardListReaders' is called, its not listing my
reader. But the installation and the registry entries for my reader
driver is perfect and as described by the DDK help. The resource manager
service has been started also. But one thing i have observed is, the
IRP's related to Power management are not coming to the driver (Is this
because, the member PowerMgmtSupport' in the card capabilities is not at
all initialized ?). IRP_MJ_START_DEVICE and other IRP's are coming and
also, another minor IRP, IRP_MN_QUERY_LEGACY_BUS_INFORMATION is
observed.. is this because i have set the 'Reader Type' member in the
reader capabilities to SCARD_READER_TYPE_VENDOR since its a PCI reader
and there is no specific type defined for PCI.

What should i do so that the resource manager recognizes our card reader ?

Regards
Esha
 
E

Eliyas Yakub [MSFT]

Are you sure you have registered and enabled smartcard interface in your
driver? You can ignore IRP_MN_QUERY_LEGACY_BUS_INFORMATION. The only driver
that handles this IRP in the entire world is the ISA bus driver provided by
MS.

-Eliyas
 
V

Venus³²

Eshanye_kp said:
Hi,

I have written a smart card reader driver using the ddk sample pscr for
WinXP. When the WinAPI 'SCardListReaders' is called, its not listing my
reader. But the installation and the registry entries for my reader driver
is perfect and as described by the DDK help. The resource manager service
has been started also. But one thing i have observed is, the IRP's related
to Power management are not coming to the driver (Is this because, the
member PowerMgmtSupport' in the card capabilities is not at all
initialized ?). IRP_MJ_START_DEVICE and other IRP's are coming and also,
another minor IRP, IRP_MN_QUERY_LEGACY_BUS_INFORMATION is observed.. is
this because i have set the 'Reader Type' member in the reader
capabilities to SCARD_READER_TYPE_VENDOR since its a PCI reader and there
is no specific type defined for PCI.

What should i do so that the resource manager recognizes our card reader ?

Regards
Esha

The problem is, your DDK sample driver may not have the code to handle
a Resource Information request. In this case, the device manager will not
be
able to display anything on its list for your sample driver. I can
explain why you see the listing for network driver, this is how it works: In
a network driver environment, the Device Manager will call
NdisMQueryAdapterResources() function, this functions is finally handled by
a miniport driver, it pulled information from the hardware and send the info
back to the caller (Device Manager) to be displayed. The Device manager
will display at its option simple or detailed information.

---------------------------------------------------------------------------------------------------------------------
a Device Manager will call this function:

NdisMQueryAdapterResources(&stat, WrapperConfigurationContext, resList,
&bufSize);

if (stat == NDIS_STATUS_SUCCESS){
PCM_PARTIAL_RESOURCE_DESCRIPTOR resDesc;
BOOLEAN haveIRQ = FALSE,
haveIOAddr = FALSE,
haveDma = FALSE;
UINT i;

for (resDesc = resList->PartialDescriptors, i = 0;
i < resList->Count;
resDesc++, i++){

switch (resDesc->Type){
case CmResourceTypePort:
if (thisDev->CardType==PC87108 &&
(resDesc->u.Port.Start.LowPart==0xEA ||
resDesc->u.Port.Start.LowPart==0x398 ||
resDesc->u.Port.Start.LowPart==0x150))
{
// This is an eval board and to config io base address

thisDev->portInfo.ConfigIoBasePhysAddr =
resDesc->u.Port.Start.LowPart;
}
else if (thisDev->CardType==PC87308 &&
(resDesc->u.Port.Start.LowPart==0x2E ||
resDesc->u.Port.Start.LowPart==0x15C))
{
// This is an eval board and to config io base address

thisDev->portInfo.ConfigIoBasePhysAddr =
resDesc->u.Port.Start.LowPart;
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top