스마트 카드 플러그 앤 플레이
페어링 프로세스
운영 체제는 다음 단계에 따라 스마트 카드를 이미 설치된 미니 드라이버와 페어링합니다.
스마트 카드에서 ATR을 가져옵니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards 레지스트리 키의 항목을 반복하고 다음을 수행합니다.
- 레지스트리에 저장된 ATRMask 하위 키 값을 스마트 카드에서 가져온 ATR에 적용합니다.
- 마스킹된 ATR 값을 레지스트리에 저장된 ATR 하위 키 값과 비교합니다.
- 두 ATR 값이 일치하는 경우 처리를 중지하고 해당 미니 드라이버를 스마트 카드와 페어링합니다.
스마트 카드와 미니 드라이버의 잘못된 페어링을 방지하려면 스마트 카드 ATR 및 ATRMask 값을 신중하게 선택해야 합니다. ATRMask가 스마트 카드에서 읽은 ATR에 적용된 후 레지스트리에 저장된 스마트 카드 ATR 값은 예상 값이어야 합니다. 그렇지 않으면 카드와 레지스트리의 마스킹된 ATR 값이 일치하지 않고 페어링이 실패합니다.
Windows 7부터 스마트 카드를 카드 판독기에 처음 삽입하면 Windows 업데이트 사이트에서 적절한 미니 드라이버를 검색하는 플러그 앤 플레이 이벤트가 트리거됩니다. Windows 업데이트 드라이버를 찾기 위해 Windows 생성하는 디바이스 ID는 다음 요인에 따라 달라집니다.
- ATR의 기록 바이트입니다. ATR 기록 바이트에 대한 자세한 내용은 ISO/IEC 7816-4:2005(E) 표준의 섹션 8을 참조하세요.
- 태그 0x7F68 GUID 목록이 있는 Microsoft 플러그 앤 플레이 AID 애플리케이션이 있습니다.
- 받은 편지함 드라이버와 쌍을 이루는 카드에 PIV 애플리케이션이 있습니다.
- 받은 편지함 드라이버와 쌍을 이루는 카드에 Microsoft 제네릭 프로필이 있는 GIDS(일반 ID 디바이스 사양) 애플리케이션이 있습니다.
플러그 앤 플레이 및 Winscard에 대한 스마트 카드 검색 프로세스에 대한 자세한 내용은 스마트 카드 검색 프로세스를 참조하세요. 이러한 프로세스는 스마트 카드에 대한 고유한 디바이스 ID를 생성합니다.
참고 Windows 스마트 카드에 대해 생성하는 디바이스 ID를 확인하려면 Windows 7 이상 버전의 Windows 실행하는 컴퓨터에 연결된 스마트 카드 판독기에서 스마트 카드를 삽입하는 것이 좋습니다. 그런 다음 장치 관리자 스마트 카드 디바이스의 "하드웨어 ID" 속성을 확인하여 디바이스 ID를 찾을 수 있습니다.
x86 및 amd64용 샘플 INF
다음은 Windows 8 이전 버전의 Windows 스마트 카드 설치를 위한 샘플 INF 파일입니다. 이 INF 파일은 X86 및 AMD64 CPU 플랫폼에서 설치를 위해 데코레이팅됩니다.
참고 배포 문제를 방지하려면 Winqual에 드라이버 패키지를 제출하기 전에 모든 대상 운영 체제의 클린 설치에서 드라이버 패키지를 테스트하는 것이 좋습니다.
;
;FabrikamVendor Smartcard Minidriver for an x86 and x64 based package.
;
[Version]
Signature="$Windows NT$"
Class=SmartCard
ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
Provider=%FABRIKAMVENDOR%
CatalogFile=delta.cat
DriverVer=10/03/2008,7.0.0.4
[Manufacturer]
%FABRIKAMVENDOR%=FabrikamVendor,NTamd64,NTamd64.6.1,NTx86,NTx86.6.1
[FabrikamVendor.NTamd64]
%FabrikamCardDeviceName%=FabrikamVendor64_Install,SCFILTER\CID_51FF0800
[FabrikamVendor.NTx86]
%FabrikamCardDeviceName%=FabrikamVendor32_Install,SCFILTER\CID_51FF0800
[FabrikamVendor.NTamd64.6.1]
%FabrikamCardDeviceName%=FabrikamVendor64_61_Install,SCFILTER\CID_51FF0800
[FabrikamVendor.NTx86.6.1]
%FabrikamCardDeviceName%=FabrikamVendor32_61_Install,SCFILTER\CID_51FF0800
[DefaultInstall]
CopyFiles=x86_CopyFiles
AddReg=AddRegDefault
[DefaultInstall.ntamd64]
CopyFiles=amd64_CopyFiles
CopyFiles=wow64_CopyFiles
AddReg=AddRegWOW64
AddReg=AddRegDefault
[DefaultInstall.NTx86]
CopyFiles=x86_CopyFiles
AddReg=AddRegDefault
[SourceDisksFiles]
Fabrikamcm64.dll=1
Fabrikamcm.dll=1
[SourceDisksNames]
1 = %MediaDescription%
[FabrikamVendor64_Install.NT]
CopyFiles=amd64_CopyFiles
CopyFiles=wow64_CopyFiles
AddReg=AddRegWOW64
AddReg=AddRegDefault
[FabrikamVendor64_61_Install.NT]
CopyFiles=amd64_CopyFiles
CopyFiles=wow64_CopyFiles
AddReg=AddRegWOW64
AddReg=AddRegDefault
Include=umpass.inf
Needs=UmPass
[FabrikamVendor32_Install.NT]
CopyFiles=x86_CopyFiles
AddReg=AddRegDefault
[FabrikamVendor32_61_Install.NT]
CopyFiles=x86_CopyFiles
AddReg=AddRegDefault
Include=umpass.inf
Needs=UmPass
[FabrikamVendor64_61_Install.NT.Services]
Include=umpass.inf
Needs=UmPass.Services
[FabrikamVendor32_61_Install.NT.Services]
Include=umpass.inf
Needs=UmPass.Services
[FabrikamVendor64_61_Install.NT.HW]
Include=umpass.inf
Needs=UmPass.HW
[FabrikamVendor64_61_Install.NT.CoInstallers]
Include=umpass.inf
Needs=UmPass.CoInstallers
[FabrikamVendor64_61_Install.NT.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces
[FabrikamVendor32_61_Install.NT.HW]
Include=umpass.inf
Needs=UmPass.HW
[FabrikamVendor32_61_Install.NT.CoInstallers]
Include=umpass.inf
Needs=UmPass.CoInstallers
[FabrikamVendor32_61_Install.NT.Interfaces]
Include=umpass.inf
Needs=UmPass.Interfaces
[amd64_CopyFiles]
Fabrikamcm.dll,Fabrikamcm64.dll
[x86_CopyFiles]
Fabrikamcm.dll
[wow64_CopyFiles]
Fabrikamcm.dll
[AddRegWOW64]
HKLM, %SmartCardNameWOW64%,"ATR",0x00000001,3b,04,51,ff,08,00
HKLM, %SmartCardNameWOW64%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff
HKLM, %SmartCardNameWOW64%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
HKLM, %SmartCardNameWOW64%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
HKLM, %SmartCardNameWOW64%,"80000001",0x00000000,%SmartCardCardModule%
[AddRegDefault]
HKLM, %SmartCardName%,"ATR",0x00000001,3b,04,51,ff,08,00
HKLM, %SmartCardName%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff
HKLM, %SmartCardName%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider"
HKLM, %SmartCardName%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider"
HKLM, %SmartCardName%,"80000001",0x00000000,%SmartCardCardModule%
[DestinationDirs]
amd64_CopyFiles=10,system32
x86_CopyFiles=10,system32
wow64_CopyFiles=10,syswow64
; =================== Generic ==================================
[Strings]
FABRIKAMVENDOR ="FabrikamVendor"
MediaDescription="FabrikamVendor Smart Card Minidriver Installation Disk"
FabrikamCardDeviceName="FabrikamVendor Minidriver for Smart Card"
SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\Fabrikam"
SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Fabrikam"
SmartCardCardModule="Fabrikamcm.dll"
이 유형의 INF 파일에는 다음이 필요합니다.
- %FabrikamCardDeviceName% 문자열로 지정된 하드웨어 ID는 디바이스의 ATR 기록 바이트 또는 디바이스의 스마트 카드 프레임워크 식별자의 디코딩된 값이어야 합니다. 이 식별자에 대한 자세한 내용은 스마트 카드 검색 프로세스의 "Windows 스마트 카드 프레임워크 카드 식별자" 섹션을 참조하세요.
- DefaultInstall 섹션은 스마트 카드 미니 드라이버 패키지에 대한 INF 파일에서 필수입니다.