CeRapiInvoke (RAPI)
9/8/2008
Esta função pode ser usada como um mecanismo de uso geral para remotamente executar uma rotina em um remoto Windows Embedded CE com dispositivo.
Syntax
HRESULT CeRapiInvoke(
LPCWSTR pDllPath,
LPCWSTR pFunctionName,
DWORD cbInput,
BYTE* pInput,
DWORD* pcbOutput,
BYTE** ppOutput,
IRAPIStream** ppIRAPIStream,
DWORD dwReserved
);
Parameters
- pDllPath
[no] Ponteiro para uma reserva seqüência de caracteres que contém o nome de uma DLL que é sobre o Windows Embedded CE - baseado no dispositivo e que contém a função identificada no pFunctionName.
- pFunctionName
[no] Ponteiro para uma reserva seqüência de caracteres que contém o nome da função que RAPI deve chamar sobre o Windows Embedded CE com dispositivo.
- cbInput
[no] Número de bytes na buffer de entrada *pInput.
- pInput
[no] Ponteiro para uma reserva que contém a entrada dados.
- pcbOutput
[out] Ponteiro para uma variável que está definido para o número de bytes de reserva de saída ppOutput Quando a função retorna.
- ppOutput
[out] Ponteiro para uma variável que está definido para a localidade de reserva de saída após retornar.
- ppIRAPIStream
[in, Out] O ppIRAPIStream parâmetro Especifica modo bloco ou modo transmitir. Modo de seleção bloco fornecendo o valor NULL. Modo transmitir selecione fornecendo um válido ponteiro para uma variável do tipo IRAPIStream; Isso IRAPIStream interface pode ser usado para um direcionar transferir dos dados. Se ppIRAPIStream não é NULL, o pFunctionName parâmetro sobre o Windows Embedded CE com dispositivo será passado um ponteiro para o IRAPIStream interface.
- dwReserved
Reservado.
Return Value
Se RAPI serviços sobre o Windows Embedded CE-com dispositivo com êxito localizar e chamar a função cliente, depois em Block Mode o valor de retorno é que que será retornado no Windows Embedded CE com dispositivo pelo chamado função. No modo de fluxo, o valor de retorno é S_OK. Se a função não foi chamado com êxito, ou ocorreu uma exceção durante sua execução, um código de erro é retornado.
O CeGetLastError função pode ser usada para o código de erro, que leva o valor definido pelo get pFunctionName, incluindo o seguinte valores:
- HRESULT_FROM_WIN32(ERROR_MOD_NOT_FOUND)
O LoadLibrarypDllPath chamar falha no dispositivo.
- HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER)
O GetProcAddress de pFunctionName chamar na falha de dispositivo.
- HRESULT_FROM_WIN32(ERROR_EXCEPTION_IN_SERVICE)
Ocorreu uma exceção durante a execução de pFunctionName.
Remarks
CeRapiInvoke Carrega o nomeado DLL Device-side in pDllPath, em seguida, chama a extensão RAPI nomeado na pFunctionName. É a responsabilidade da extensão RAPI para versão o objeto IRAPIStream (isto é, para chamar pIRAPIStream-> Release();).
Um aplicativo deve alocar memória para o pInput parâmetro com o LocalAlloc função. O chamador é responsável por liberando pInput. O sistema aloca memória para o ppOutput parâmetro. Quando o aplicativo for concluído com a reserva, ele deve livre a memória com o LocalFree função.
O CeRapiInvoke função funciona no modo bloco ou modo transmitir. No modo bloco, o chamador passa os dados em uma única reserva como um parâmetro de entrada e recebe a resposta em uma única reserva como um parâmetro de saída. Este é um chamada síncrona, assim, todas as entrada ou dados de saída deve estar presente na memória no tempo do chamar. No modo transmitir, o CeRapiInvoke função retorna um ponteiro para um IStream interface tipo que pode ser usado para troca arbitrária tamanho dados em qualquer ordem e direção. Neste modo, o chamador pode ainda transmitir dados em uma única reserva como um parâmetro de entrada, mas a partir desse apontar em todos os dados devem ser trocados by means of a transmitir. Assim, os dados podem ser ler, gravados e armazenados em pedaços. Fluxo contínuo é significativamente mais rápida do que modo bloco.
O ppIRAPIStream parâmetro Especifica modo bloco ou modo transmitir. Modo de seleção bloco fornecendo o valor NULL. Modo transmitir selecione fornecendo um válido ponteiro para uma variável do tipo IRAPIStream; Isso IRAPIStream interface pode ser usado para um direcionar transferir dos dados. Se ppIRAPIStream não é NULL, o pFunctionName parâmetro sobre o dispositivo Windows Embedded CE será passado um ponteiro para o IRAPIStream interface.
O IRAPIStreamdefinição se baseia IStream e tiver sido expandidos por dois novos métodos para permitir a configuração de tempos limite. Esses métodos, IRAPIStream::SetRapiStat e IRAPIStream::GetRapiStat, são modeledafter o IStream::STAT método.
O IRAPIStream objeto não garante a recepção de dados, o dispositivo. É up to seu aplicativo para implementar aplicativo-nível ACK. O aplicativo dispositivo deve enviar uma confirmação codificar após ele teve ler todos os dados a partir de transmitir. Depois de aplicativo para desktop foi escrito para a transmitir, ele deve aguardar até que ele receba a codificar confirmação do aplicativo de dispositivo antes ele libera a transmitir.
Observação
Em versões anteriores, esse método poderia ser usado para obter um identificador aos objetos no remoto dispositivo que pode ser usado por outro método RAPI chama, como CeWriteRecordProps.Iniciando com Windows CE 5.0, chamadas RAPI método irão falhar se um identificador recuperada por esse método é usado.Alças de banco de dados e chave do Registro devem ser obtidas usando o CeOpenDatabaseEx e CeRegOpenKeyEx Métodos Rapi.
Requirements
Header | rapi.h |
Library | rapi.lib |
Windows Embedded CE | Windows CE 3.0 and later |
Windows Mobile | Pocket PC 2002 and later, Smartphone 2002 and later |