"Eshanye_kp" <esha RemoveThis @procsys.com> wrote in message
news:452F37EE.9040508@procsys.com...
> 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;
}
>> Stay informed about: Why Smart card reader is not listed by the resource manage..