Compartir a través de


MÉTODO ISCardISO7816::SelectFile

[El método SelectFile está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. No está disponible para su uso en Windows Server 2003 con Service Pack 1 (SP1) y versiones posteriores, Windows Vista, Windows Server 2008 y versiones posteriores del sistema operativo. Los módulos de tarjeta inteligente proporcionan una funcionalidad similar.]

El método SelectFile construye un comando de unidad de datos de protocolo de aplicación (APDU) que establece un archivo elemental actual dentro de un canal lógico. Los comandos posteriores pueden hacer referencia implícitamente al archivo actual a través del canal lógico.

Al seleccionar un directorio (DF) en el almacén de archivos de tarjeta (que puede ser la raíz (MF) del almacén de archivos, se convierte en el DF actual. Después de esta selección, se puede hacer referencia a un archivo elemental actual implícito a través de ese canal lógico.

Al seleccionar un archivo elemental, se establece el archivo seleccionado y su elemento primario como archivos actuales.

Después de restablecer la respuesta, el MF se selecciona implícitamente a través del canal lógico básico, a menos que se especifique de forma diferente en los bytes históricos o en la cadena de datos inicial.

Sintaxis

HRESULT SelectFile(
  [in]      BYTE         byP1,
  [in]      BYTE         byP2,
  [in]      LPBYTEBUFFER pData,
  [in]      LONG         lBytesToRead,
  [in, out] LPSCARDCMD   *ppCmd
);

Parámetros

byP1 [in]

Control de selección.

P1 (byte superior en palabra): 8 7 6 5 4 3 2 1 Significado
000000xx
Selección del identificador de archivo
00000000
EF, DF o MF
00000001
DF secundario
00000010
EF en DF
00000011
DF primario del DF actual

 

Cuando P1=00, la tarjeta sabe debido a una codificación específica del identificador de archivo o debido al contexto de ejecución del comando si el archivo que se va a seleccionar es mf, DF o EF.

Cuando P1-P2=0000, si se proporciona un identificador de archivo, será único en los siguientes entornos:

  • Elementos secundarios inmediatos del DF actual
  • DF primario
  • Elementos secundarios inmediatos del DF primario

Si P1-P2=0000 y si el campo de datos está vacío o es igual a 3F00, seleccione el MF.

Cuando P1=04, el campo de datos es un nombre DF, posiblemente truncado a la derecha.

Cuando se admita, estos comandos sucesivos con el mismo campo de datos seleccionarán los FD cuyos nombres coincidan con el campo de datos (es decir, comience con el campo de datos de comando). Si la tarjeta acepta el comando con un campo de datos vacío, todos o un subconjunto de las FD se pueden seleccionar sucesivamente.

byP2 [in]

Control de selección.

pData [in]

Datos para la operación si es necesario; else, NULL. Los tipos de datos que se pasan en este parámetro incluyen:

  • id. de archivo
  • ruta de acceso desde mf
  • ruta de acceso desde el DF actual
  • Nombre DF

lBytesToRead [in]

Vacía (es decir, 0) o longitud máxima de los datos esperados en respuesta.

ppCmd [in, out]

En la entrada, un puntero a un objeto de interfaz ISCardCmd o NULL.

A cambio, se rellena con el comando APDU construido por esta operación. Si ppCmd se estableció en NULL, se crea internamente un objeto ISCardCmd de tarjeta inteligente y se devuelve a través del puntero ppCmd.

Valor devuelto

El método devuelve uno de los siguientes valores posibles.

Código devuelto Descripción
S_OK
Operación completada correctamente.
E_INVALIDARG
Parámetro no válido.
E_POINTER
Se pasó un puntero incorrecto.
E_OUTOFMEMORY
Memoria insuficiente

 

Comentarios

A menos que se especifique lo contrario, la ejecución correcta del comando encapsulado modifica el estado de seguridad según las reglas siguientes:

  • Cuando se cambia el archivo elemental actual o cuando no hay ningún archivo elemental actual, se pierde el estado de seguridad específico de un archivo elemental actual anterior.
  • Cuando el directorio de almacén de archivos (DF) actual es descendiente o idéntico al df actual anterior, se pierde el estado de seguridad específico del df actual anterior. El estado de seguridad común a todos los antecesores comunes del DF anterior y nuevo actual se mantiene.

Para obtener una lista de todos los métodos proporcionados por esta interfaz, vea ISCardISO7816.

Además de los códigos de error COM enumerados anteriormente, esta interfaz puede devolver un código de error de tarjeta inteligente si se llamó a una función de tarjeta inteligente para completar la solicitud. Para obtener más información, consulte Valores devueltos de tarjeta inteligente.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Fin de compatibilidad de cliente
Windows XP
Fin de compatibilidad de servidor
Windows Server 2003
Encabezado
Scardssp.h
Biblioteca de tipos
Scardsrv.tlb
Archivo DLL
Scardssp.dll
IID
IID_ISCardISO7816 se define como 53B6AA68-3F56-11D0-916B-00AA00C18068

Consulte también

ISCardISO7816