[SuppressUnmanagedCodeSecurity()]
public class myIDUnsafeNativeMethods
{
[DllImport(GlobalConstants.myIDApi, CharSet = CharSet.Unicode)]
static internal extern int EidStartup(
int nApiVersion
);
[DllImport(GlobalConstants.myIDApi, EntryPoint = "EidCleanup", CharSet = CharSet.Unicode)]
static internal extern int EidCleanup(
);
[DllImport(GlobalConstants.myIDApi, CharSet = CharSet.Unicode)]
static internal extern int EidReadFixedPersonalData(
ref tagEID_FIXED_PERSONAL_DATA pData
);
[DllImport(GlobalConstants.myIDApi, CharSet = CharSet.Unicode)]
static internal extern int EidReadDocumentData(
ref tagEID_DOCUMENT_DATA pData
);
[DllImport(GlobalConstants.myIDApi, CharSet = CharSet.Unicode)]
static internal extern int EidBeginRead(
[MarshalAs(UnmanagedType.LPStr)] String szReader
);
...
[SecurityPermission(SecurityAction.Assert, UnmanagedCode = true)]
public myResult ReadData()
{
myResult tmpResult = new myResult();
int ret;
ret = myIDUnsafeNativeMethods.EidBeginRead(_deviceName);
if (ret < 0)
{
tmpResult.errorCode = ret;
tmpResult.errorMessage = GetErrorMessage(ret) + " _EidBeginRead";
myIDUnsafeNativeMethods.EidEndRead();
return tmpResult;
}
ret = myIDUnsafeNativeMethods.EidReadDocumentData(ref tmpResult.eIdDocumentData);
if (ret < 0)
{
tmpResult.errorCode = ret;
tmpResult.errorMessage = GetErrorMessage(ret) + " _EidReadDocumentData";
myIDUnsafeNativeMethods.EidEndRead();
return tmpResult;
}
...
Nema nekih detalja :) idem kroz kod, EidBeginRead vrati 0, dodjem do EidReadDocumentData i dobijem EID_E_READER_ERROR = -6; Cini mi se da sedmica daje drugacija imena USB uredjajima od XP-a, to sam primetio pomocu ovog programceta
http://www.nirsoft.net/utils/usb_devices_view.html, eksperimentisao sam sa _deviceName, ali onda dobijem EID_E_UNABLE_TO_EXECUTE = -5; Dublje od toga ne mogu da udjem kroz debug (cekirao sam u project properties "Enable unmanaged code debug").